您的位置:首页 > 其它

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

2017-10-25 09:32 696 查看
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所在的位置。运行结果如图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐