maven学习笔记:命令行模式创建scala_spark项目并运行程序

来源:互联网 发布:金数据 - 登录 编辑:程序博客网 时间:2024/06/16 01:46

新建项目

使用maven新建一个项目:

mvn archetype:generate

键入组ID与项目名称:

在源码文件夹下新建一个scala文件:

touch ~/projects/scalaDemo/src/main/java/daya/scalaDemo.scala

代码如下:

import org.apache.spark.SparkContextimport org.apache.spark.SparkContext._import org.apache.spark.SparkConfobject SimpleApp {  def main(args: Array[String]) {    val logFile = "/home/daya/test.txt"     val conf = new SparkConf().setAppName("Simple Application")    val sc = new SparkContext(conf)    val logData = sc.textFile(logFile, 2).cache()    val numAs = logData.filter(line => line.contains("a")).count()    val numBs = logData.filter(line => line.contains("b")).count()    println("Lines with a: %s, Lines with b: %s".format(numAs, numBs))  }}

在项目文件夹下新建target/classses路径:

mkdir -p target/classes

使用scala编译运行

编译命令:

scalac -d target/classes -classpath target/classes:/usr/DevProgram/spark-2.2.0-bin-hadoop2.7/jars/* src/main/java/daya/scalaDemo.scala //注:-d表示编译输出目录,*表所有的jar包,因为不知道到底依赖哪一个确定的jar包

运行编译生成的class文件:

java -cp target/classes/:/usr/DevProgram/spark-2.2.0-bin-hadoop2.7/jars/* -Dspark.master=local  SimpleApp

(把jars下的所有jar包都加入类路径是因为不知道scala.collection.Seq在哪个jar包下,不得已为之)
报错信息如下,暂未解决:
ClassNotFoundException: scala.runtime.LambdaDeserialize
猜测可能是版本问题,(预编译版)spark目录下的scala包名为2.11.8:

而使用的scala版本为2.12.3,更改scala版本试一下。

艹他妈果然是版本问题,换2.11.8就解决了,输出信息如下,文本不含字母a或b:


使用maven编译运行

编辑项目下的pom.xml文件:

    <dependency>        <groupId>junit</groupId>        <artifactId>junit</artifactId>        <version>4.12</version>         <scope>test</scope>    </dependency>    <dependency>        <groupId>org.apache.spark</groupId>        <artifactId>spark-core_2.11</artifactId>        <version>2.2.0</version>    </dependency>    <dependency>        <groupId>org.scala-lang</groupId>          <artifactId>scala-library</artifactId>          <version>2.11.8</version>     </dependency>
    <build>        <sourceDirectory>src/main/scala</sourceDirectory>        <testSourceDirectory>src/test/scala</testSourceDirectory>        <plugins>            <plugin>                <groupId>net.alchim31.maven</groupId>                <artifactId>scala-maven-plugin</artifactId>                <version>3.2.1</version>            </plugin>            <plugin>                <groupId>org.codehaus.mojo</groupId>                <artifactId>exec-maven-plugin</artifactId>                <version>1.2.1</version>            </plugin>        </plugins>    </build>

(注意:maven exec插件版本选择1.2.1,最新的1.5.0在执行时异常报错)
由于是scala_spark项目,注意 把路径改为scala,项目层级结构如下图所示:

maven编译:

mvn  scala:compile

maven执行:

mvn exec:java -Dexec.mainClass="SimpleApp" -Dexec.args="/home/daya/test.txt" -Dspark.master=local

输出信息:

原创粉丝点击