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

来源:互联网 发布:java开发实战经典答案 编辑:程序博客网 时间:2024/06/05 03:15

创建层级目录

确保maven已安装:

mvn -v

在主目录下新建项目文件夹:project_spark,在此目录下使用命令创建一个项目,maven会替我们创建好层级目录:

mvn archetype:generate

apply filter数字回车选择默认值,org.apache.maven.archetypes:maven-archetype-quickstart版本回车选择默认值,其中需要键入的是组ID与项目名称:

确认之后maven会在目录下生成如下结构的层级目录 :

可以看到这跟之前在eclipse上创建maven项目所生成的层级是一样的。

将spark自带的示例java程序复制到项目文件夹中:

cp /usr/DevProgram/spark-2.2.0-bin-hadoop2.7/examples/src/main/java/org/apache/spark/examples/JavaWordCount.java ~/project_spark/sparkDemo/src/main/java/daya

添加依赖包

项目需要的依赖包有spark-core和maven-complier.plugin,将其添加到项目主目录下的pom.xml文件中:

    <dependencies>        <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.apache.spark</groupId>            <artifactId>spark-sql_2.11</artifactId>            <version>2.2.0</version>        </dependency>      </dependencies>    <build>        <plugins>                <plugin>                    <groupId>org.apache.maven.plugins</groupId>                    <artifactId>maven-compiler-plugin</artifactId>                        <version>3.6.1</version>                        <configuration>                        <source>1.8</source>                        <target>1.8</target>                    </configuration>                </plugin>        </plugins>    </build>

参考博客
编译 :

提醒一句,master主机的maven镜像源还是网络镜像源,在配置pom.xml时不需要考虑本地仓库有没有相关包的问题。但是slave1从机是被配置成了局域网镜像源,则需要考虑本地仓库存不存在相关包的问题。编译成功之后将新下载的包 复制一份到nexus仓库下:

cp -r ~/.m2/repository/org/apache/spark ~/sonatype-work/nexus/storage/central/org/apache/

构建成功后新增的结构目录:


使用Java运行示例程序

使用命令执行target目录下的jar包:

java -cp sparkDemo-1.0-SNAPSHOT.jar:/usr/DevProgram/spark-2.2.0-bin-hadoop2.7/jars/* -Dspark.master=local org.apache.spark.examples.JavaWordCount ~/test.txt//注:-cp参数指定类路径为/usr/DevProgram/spark-2.2.0-bin-hadoop2.7/jars/下的所有jar包。导入所有jar包是因为不知道org.apache.spark.sql.SparkSession在哪个jar包下(现在知道了,在spark-sql_2.11-2.2.0.jar包下)    -D设置系统参数spark.master=local,任务在本地上运行

test.txt内容为:

hello hellohellohowyou i iputput

任务输出结果:


使用maven运行示例程序

1.直接执行,指定参数

在项目pom.xml中加入:

    <plugin>        <groupId>org.codehaus.mojo</groupId>               <artifactId>exec-maven-plugin</artifactId>            <version>1.2.1</version>        </plugin>

在项目文件夹下执行:

mvn exec:java -Dexec.mainClass="org.apache.spark.examples.JavaWordCount" -Dexec.args="/home/daya/test.txt" -Dspark.master=local
2.将参数写入pom.xml执行

在项目文件夹的pom.xml文件中加入:

    <plugin>        <groupId>org.codehaus.mojo</groupId>               <artifactId>exec-maven-plugin</artifactId>            <version>1.2.1</version>        <configuration>            <mainClass>org.apache.spark.examples.JavaWordCount</mainClass>            <arguments>/home/daya/test.txt</arguments>        </configuration>    </plugin>

在项目文件夹下执行:

mvn exec:java -Dspark.master=local

实际上参数spark.master=local也是可以写入pom.xml中的,但是本人对这一方面还不熟悉,不知道该怎么写。

原创粉丝点击