使用Maven对Scala独立应用程序进行编

简介: 使用Maven对Scala独立应用程序进行编

任务描述

本关任务:使用Scala编写一个找出README.md文件中包含'a'的行数和包含'b'的行数的程序,并使用Maven对程序进行编译打包提交到Saprk上。

相关知识

在终端中执行如下命令创建一个文件夹 sparkapp3作为应用程序根目录:

cd ~ # 进入用户主文件夹
mkdir ./sparkapp3 # 创建应用程序根目录
mkdir -p ./sparkapp3/src/main/scala # 创建所需的文件夹结构

在./sparkapp3/src/main/scala下建立一个名为SimpleApp.scala的文件(vim ./sparkapp3/src/main/scala/SimpleApp.scala),添加代码如下:

/* SimpleApp.scala */
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf
object SimpleApp {
def main(args: Array[String]) {
val logFile = "file:///usr/local/spark/README.md" // Should be some file on your system
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))
}
}

该程序计算 /usr/local/spark/README 文件中包含 “a” 的行数 和包含 “b” 的行数。代码第8行的 /usr/local/spark 为 Spark 的安装目录,如果不是该目录请自行修改。不同于 Spark shell,独立应用程序需要通过 val sc = new SparkContext(conf) 初始化 SparkContext,SparkContext 的参数 SparkConf 包含了应用程序的信息。 该程序依赖Spark Java API,因此我们需要通过Maven进行编译打包。在./sparkapp3目录中新建文件pom.xml,命令如下:

cd ~/sparkapp3
vim pom.xml

然后,在pom.xml文件中添加如下内容,用来声明该独立应用程序的信息以及与Spark的依赖关系:

cn.edu.xmu
simple-project
4.0.0
Simple Project
jar
1.0
jboss
JBoss Repository
http://repository.jboss.com/maven2/
 
org.apache.spark
spark-core_2.12
3.0.2
src/main/scala
org.scala-tools
maven-scala-plugin
compile
2.12.10
-target:jvm-1.8

为了保证Maven能够正常运行,先执行如下命令检查整个应用程序的文件结构:

cd ~/sparkapp3
find .

文件结构应该是类似如下的内容:

.
./pom.xml
./src
./src/main
./src/main/scala
./src/main/scala/SimpleApp.scala

接下来,我们可以通过如下代码将整个应用程序打包成JAR包(注意:计算机需要保持连接网络的状态,而且首次运行打包命令时,Maven会自动下载依赖包,需要消耗几分钟的时间):

cd ~/sparkapp3 #一定把这个目录设置为当前目录
/usr/local/maven/bin/mvn package

如果屏幕返回如下信息,则说明生成JAR包成功:

生成的应用程序JAR包的位置为~/sparkapp3/target/simple-project-1.0.jar。如果运行Maven编译打包过程很慢,是因为需要到国外网站下载很多的依赖包,国外网站速度很慢,因此,要花费很长时间。为了加快速度,可以更改为国内的仓库地址。 最后,我们就可以将生成的 jar 包通过 spark-submit 提交到 Spark 中运行了,命令如下:

/usr/local/spark/bin/spark-submit --class "SimpleApp" ~/sparkapp3/target/simple-project-1.0.jar
#上面命令执行后会输出太多信息,可以不使用上面命令,而使用下面命令查看想要的结果
/usr/local/spark/bin/spark-submit --class "SimpleApp" ~/sparkapp3/target/simple-project-1.0.jar > step5.txt #结果输出到step5.txt中
cat step5.txt

得到的结果如下:

Lines with a: 71, Lines with b: 38

到此,就顺利完成 Spark 应用程序的Maven编译打包运行了。

编程要求

根据提示,完成Maven对Sacal进行打包。


开始你的任务吧,祝你成功!

目录
相关文章
|
2月前
|
分布式计算 Java Scala
spark 与 scala 的对应版本查看、在idea中maven版本不要选择17,弄了好久,换成11就可以啦
spark 与 scala 的对应版本查看、.在idea中maven版本不要选择17,弄了好久,换成11就可以啦
110 2
|
7月前
|
Scala
Idea中创建scala项目中Cannot resolve plugin org.scala-tools:maven-scala-plugin: unknown
Idea中创建scala项目中Cannot resolve plugin org.scala-tools:maven-scala-plugin: unknown
52 0
|
分布式计算 Java Scala
maven环境下java和scala混合开发如何打依赖包?
在实际的项目开发中,很多时候我们可能会用java和scala混合开发,比如Flink或者Spark的项目,他们两个可以相互调用,也有各自的优缺点,结合起来使用非常的方便,但是在编译打包的时候很多朋友遇到要么Java的包没打进去,或者Scala的包没打进去,运行的时候报各种找不到jar包的错,下面介绍一种打包的方法,可以运行项目里面的任何一个方法,供大家参考,当然还有很多其他的打包方式. 直接看下面的maven里面的配置 <build>
|
Java 应用服务中间件 Maven
spring boot 使用maven和fat jar/war运行应用程序的对比
spring boot 使用maven和fat jar/war运行应用程序的对比
spring boot 使用maven和fat jar/war运行应用程序的对比
|
Java Scala Maven
Maven - Scala/Java 项目添加自己的 jar 包
一.引言 scala / java 项目引用非官方依赖 jar 包时,需要自定义并打入最终的 jar 包,经过试验以下方案可以实现。 二.添加 jar 包到 maven 库 ???? 第三方自定义 jar 包可以添加到本地 maven 库中,随后即可 mvn package 打入到最终的项目 jar 包中,该方法最方便。创建 install.sh 文件,jar_path 为第三方自定义 jar 包在设备的位置,groupId、artifactId 和 版本号 version 自己定义,执行脚本后
358 0
Maven - Scala/Java 项目添加自己的 jar 包
|
分布式计算 Java Hadoop
Spark集群搭建记录 | 云计算[CentOS8] | Scala Maven项目访问Spark(local模式)实现单词计数(下)
step6 创建scala object step7 修改pom文件 step8 配置项目 step9 添加依赖库(Spark的jar包) step10 设置输入路径
141 0
Spark集群搭建记录 | 云计算[CentOS8] | Scala Maven项目访问Spark(local模式)实现单词计数(下)
|
分布式计算 IDE Java
Spark集群搭建记录 | 云计算[CentOS7] | Scala Maven项目访问Spark(local模式)实现单词计数(上)
写在前面 step1 下载Scala IDE step2 解压安装Scala IDE step3 Scala 下载 step4 Scala 配置 step5 创建scala项目
128 0
Spark集群搭建记录 | 云计算[CentOS7] | Scala Maven项目访问Spark(local模式)实现单词计数(上)
|
Java Scala Maven
scala maven idea 第一个scala 程序
    1.添加 scala 插件   选择settings   下载  scala -intelij-bin  文件 http://plugins.jetbrains.com/plugin/1347?pr=   选择 plugins  -》 Install plugi...
981 0