Scala+Spark+Hadoop+IDEA上传并执行任务
本文接续上一篇文章,已经在IDEA中执行Spark任务执行完毕,测试成功。
上文链接:Scala +Spark+Hadoop+Zookeeper+IDEA实现WordCount单词计数(简单实例)
一、打包
1.1 将setMaster注释掉
package day05 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} import scala.collection.mutable /** * 打包注意事项:1,将setMaster注释掉 * 2,不需要打印 */ object SparkWordCount { def main(args: Array[String]): Unit = { //配置信息类 //1,setAppName(任务名称) setMaster(表示开启多少个线程运行) System.setProperty("hadoop.home.dir", "/usr/local/hadoop-2.7.5") val conf: SparkConf = new SparkConf().setAppName("SparkWordCount")//.setMaster("local[*]") //上下文对象 val sc: SparkContext = new SparkContext(conf) //读取数据(数据通过数组 args进入) val lines: RDD[String] = sc.textFile(args(0)) //处理数据 val map01: RDD[(String, Int)] = lines.flatMap(_.split(" ")).map((_, 1)) val wordCount: RDD[(String, Int)] = map01.reduceByKey(_ + _).sortBy(_._2, false) val wcToBuffer: mutable.Buffer[(String, Int)] = wordCount.collect().toBuffer // println(wcToBuffer) sc.stop() } }
1.2 打开 clear 并打包
(1)工具栏-->view-->Tool Buttons(右侧出现 Maven Project)
(2)双击clean
(3)双击package
打包结果:(出现target、连个jar包)
注意:如果出现ClassNotFound 并且出现了只有一个Jar包的话,就将其他的没有用的类删掉,只留下当前类。
1.3 拷贝生成的Jar包
二、上传
2.1 将Jar包拷贝到指定目录下(我这儿将scala02-1.0-SNAPSHOT.jar改名为 swc.jar)
/root/swc.jar
2.2 在spark中运行
./bin/spark-submit --class day05.SparkWordCount --master spark://centos01:7077 --executor-memory 1g --total-executor-cores 2 /root/swc.jar hdfs://centos01:9000/ws hdfs://centos01:9000/outp
–class设定的是程序的入口点,也就是我们的驱动类,这点和Hadoop MapReduce 程序很相似。
–master是我们设置的master URL,这里官方有详细的参数列表:
- local:在本地的单线程运行
- local[k]:在本地多线程运行,运行线程数为K
- local[*]:在本地多线程运行,尽可能多的线程数量
- spark://HOST:PORT :连接上spark单点模式运行,端口PORT是提前配置好的,默认端口7077
- mesos://HOST:PORT :连接上mesos(好像是一种集群支持工具,没有深入研究)
- yarn :基于Hadoop的yarn运行,集群的位置在 HADOOP_CONF_DIR ,YARN_CONF_DIR这两个变量指定的位置
2.3 从Web ui查看信息是否上传成功。
(1)查看spark任务
(2)查看hdfs 文件上传
(3)通过命令来查看内容。
[root@centos01 spark-1.6.3-bin-hadoop2.6]# hdfs dfs -cat /outp/part-00000 (hello,12) (java,9) [root@centos01 spark-1.6.3-bin-hadoop2.6]# hdfs dfs -cat /outp/part-00001 (scala,7) (new,7) (work,7) (python,5) [root@centos01 spark-1.6.3-bin-hadoop2.6]# hdfs dfs -cat /outp/part-00002 (javaScript,4) (jvm,4) (world,3) [root@centos01 spark-1.6.3-bin-hadoop2.6]#