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

来源:互联网 发布:淘宝店铺如何分析报告 编辑:程序博客网 时间:2024/04/28 07:55
1、 创建基于maven的scala项目步骤
(1)创建一个maven项目
File->new project -> maven
 
不需要选择archetype,直接点击Next
 
Next
 
Finish,完成创建。项目目录如下:
 
(2)将scala添加到项目中
Add framework support
 
选择scala,以及对应的scala-sdk,完成后点击ok!
 
(3)创建wordcount对象



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

 


上图中删除多余的jar一定要做,否则在spark集群中运行时会报错。
 
Ok!
 
 

 


生成的jar如图。
(8)在spark on yarn集群上运行
使用spark-submit部署应用
1) spark-submit的一般形式
bin/spark-submit [options] <app jar | python file> [app options]
<app jar | python file>表示包含应用入口的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目录下开始写即可。
 
运行命令行:




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


阅读全文
0 0
原创粉丝点击