idea+maven+scala创建wordcount,打包jar并在spark on yarn上运行

1、 创建基于maven的scala项目步骤
(1)创建一个maven项目
File->new project -> maven
  idea+maven+scala创建wordcount,打包jar并在spark on yarn上运行_第1张图片
不需要选择archetype,直接点击Next
  idea+maven+scala创建wordcount,打包jar并在spark on yarn上运行_第2张图片
Next
  idea+maven+scala创建wordcount,打包jar并在spark on yarn上运行_第3张图片
Finish,完成创建。项目目录如下:
  idea+maven+scala创建wordcount,打包jar并在spark on yarn上运行_第4张图片
(2)将scala添加到项目中
Add framework support
  idea+maven+scala创建wordcount,打包jar并在spark on yarn上运行_第5张图片
选择scala,以及对应的scala-sdk,完成后点击ok!
  idea+maven+scala创建wordcount,打包jar并在spark on yarn上运行_第6张图片
(3)创建wordcount对象

idea+maven+scala创建wordcount,打包jar并在spark on yarn上运行_第7张图片

idea+maven+scala创建wordcount,打包jar并在spark on yarn上运行_第8张图片


Ok,在WordCount中编写main方法作为程序的入口,如下:
  idea+maven+scala创建wordcount,打包jar并在spark on yarn上运行_第9张图片
(4)在maven的pox.xml中添加jar依赖
特别提醒:注意scala和spark的版本要相符合,否则运行会报错,下图用的是scala-2.10.4和spark-1.6.3。
  idea+maven+scala创建wordcount,打包jar并在spark on yarn上运行_第10张图片
(5)编写wordcount代码
  idea+maven+scala创建wordcount,打包jar并在spark on yarn上运行_第11张图片
(6)运行(快捷键:crtl+shift+f10)
  idea+maven+scala创建wordcount,打包jar并在spark on yarn上运行_第12张图片
(7)打包jar
  idea+maven+scala创建wordcount,打包jar并在spark on yarn上运行_第13张图片
 

 idea+maven+scala创建wordcount,打包jar并在spark on yarn上运行_第14张图片

idea+maven+scala创建wordcount,打包jar并在spark on yarn上运行_第15张图片

上图中删除多余的jar一定要做,否则在spark集群中运行时会报错。
  idea+maven+scala创建wordcount,打包jar并在spark on yarn上运行_第16张图片
Ok!
  idea+maven+scala创建wordcount,打包jar并在spark on yarn上运行_第17张图片
 

 idea+maven+scala创建wordcount,打包jar并在spark on yarn上运行_第18张图片

idea+maven+scala创建wordcount,打包jar并在spark on yarn上运行_第19张图片

生成的jar如图。
(8)在spark on yarn集群上运行
使用spark-submit部署应用
1) spark-submit的一般形式
bin/spark-submit [options] [app options]
表示包含应用入口的JAR包或者Python脚本
[app options]是传给你的应用的选项
spark-submit的一些常见标记
标记 描述
--master 表示要连接的集群管理器
--deploy-mode 选择在本地启动驱动器程序,还是在集群中的一台工作节点机器上启动。在客户端模式下,spark-submit会将驱动器程序运行在spark-submit被调用的这台机器上。在集群模式下,驱动器程序会被传输并被执行于集群的一个工作节点上,默认是本地模式。
--class 运行Java或者Scala程序应用的主类
--name 应用的显示名,会显示在spark的网页用户界面中
--jars 需要上传并放在应用的CLASSPATH中的JAR包的雷彪。如果应用依赖于少量第三方的jar包,可以把它们放在这个参数中
--files 需要放在应用工作目录中的文件雷彪。这个参数一般用来放需要分发到各节点的数据文件
--py-files 需添加到PYTHONPATH中的文件的雷彪。其中可以包含.py /.egg以及.zip文件
--executor-memory 执行器进程使用的内存量,以字节为单位,可以使用后缀指定更大的单位,比如512M或者15g
--driver-memory 驱动器进程使用的内存量,以字节为单位。可以使用后缀指定更大的单位,比如512m或者15g
./bin/spark-submit 
--master spark:// hostname:7077 
--deploy-mode cluster
--class com.databricks.examples.SparkExample
--name "Example program"
--jars dep1.jar,dep2.jar,dep3.jar
--total-executor-core 300
--executor-memory 10g
2) WordCount运行示例
说明:java文件夹已经mark as sources root了,所以在打包成jar的包运行过程中写main方法所在的类时直接从java目录下开始写即可。
  idea+maven+scala创建wordcount,打包jar并在spark on yarn上运行_第20张图片
运行命令行:

idea+maven+scala创建wordcount,打包jar并在spark on yarn上运行_第21张图片


最后两个为jar包所在位置和输入文件在HDFS上的路径。注意spark-submit所在的位置。运行结果如图:

idea+maven+scala创建wordcount,打包jar并在spark on yarn上运行_第22张图片

你可能感兴趣的:(spark学习)