您的位置:首页 > 其它

idea+maven+scala创建wordcount,打包jar并在spark on yarn上运行(可以使用)

2018-03-14 17:08 1521 查看
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所在的位置。运行结果如图:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐