本地Spark程序提交到hadoop集群运行流程
2017-08-15 17:38
513 查看
1.本地环境准备
本文是将eclipse开发环境下的maven+Spark+scala程序移植到集群环境上执行过程,写的很粗糙,见谅。本地用eclipse编写Spark小程序,完成从txt文件读取数据操作。
本地maven+Spark+scala环境就不多说了,如果配置出问题,就下载最新的eclipse然后从商店装插件吧。
注意在maven的配置文件pom.xml中插入Spark引用:
<dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.10</artifactId> <version>1.2.0</version> </dependency>
2.编写测试代码
本地数据文件放在data文件夹下,数据文件格式是“性别”,“姓名”。scala代码如下,代码中注释掉的是本地文件读取,替换为HDFS上的路径,代码中制定local不需要修改,会在后面的执行脚本中被覆盖。“*”表示服务器IP,端口为默认端口。package com.******.scalaprogram import org.apache.spark.SparkContext import org.apache.spark.SparkContext._ import org.apache.spark.rdd.RDD import scala.collection.mutable.LinkedList object TestScala { def main(args: Array[String]): Unit = { val sc = new SparkContext("local[2]", "Pations Data Analysis") // val peopledata = sc.textFile("data/aaaaaa.txt") val peopledata = sc.textFile("hdfs://*.*.*.*:8020/user/mydir/aaaaaa.txt") val peoplelines = peopledata.collect() def parse(line:String) = { val pieces = line.split(",") val sex = pieces(0).toString() val name = pieces(1).toString() (sex,name) } var sexLinkedList = LinkedList[String]("sex") var nameLinkedList = LinkedList[String]("name") for (i<-0 to (peoplelines.length-1)){ var peoplerowcollectline = parse(peoplelines(i)) val parse_1 = peoplerowcollectline._1 val parse_2 = peoplerowcollectline._2 sexLinkedList.append(LinkedList(parse_1)) nameLinkedList.append(LinkedList(parse_2)) } val sexList:List[String] = sexLinkedList.toList val nameList:List[String] = nameLinkedList.toList val peopleList : List[(String,String)] = sexList.zip(nameList).tail val rdd2 = sc.parallelize(peopleList) val combinByKeyRDD2 = rdd2.combineByKey( (x :String)=>(List(x),1), (peo:(List[String],Int),x:String)=>(x::peo._1,peo._2+1), (sex1:(List[String],Int),sex2:(List[String],Int)) => (sex1._1:::sex2._1,sex1._2+sex2._2)) combinByKeyRDD2.foreach(println) } }
3.数据文件上传
将数据文件上传到服务器,这里用的是Xftp。上传完毕后紧接着上传到HDFS,注意要与上面代码中的路径一致。[root@***** spark_dir]#hadoop fs -put aaaaaa.txt /user/mydir/aaaaaa.txt
4.程序打包和上传
这里使用maven打包文件,打包方式有多种,这里选择:在工程包位置右击 -> Run as -> Maven install,之后会在下图中位置出现jar包。将jar包拷贝到服务器。
5.集群运行程序
编写运行脚本,这个网上一大堆,我也是参考的。注意其中spark的路径和程序的class路径最后运行脚本:./combinbykey.sh >>spark.log得到结果
由于涉及公司等个人信息,为了避免麻烦,做了处理导致图片有点难看,将就下哈哈。整个程序很简单,细心就可以了。
相关文章推荐
- eclipse或idea中开发spark程序本地运行以及提交集群运行
- 编写Spark程序并提交到集群上运行
- 在Eclipse下开发Hadoop程序并提交到集群中运行
- Spark on yarn--几种提交集群运行spark程序的方式
- win10下将spark的程序提交给远程集群中运行
- 在JAVA应用中远程提交MapReduce程序至Hadoop集群运行
- 攻城狮在路上(陆)-- 提交运行MapReduce程序到hadoop集群运行
- 将java开发的wordcount程序提交到spark集群上运行
- Eclipse打包mapreduce程序并提交至hadoop集群运行
- scala编写的Spark程序远程提交到服务器集群上运行
- Windows 上面搭建 Spark + Pycharm/idea scala/python 本地编写Spark程序,测试通过后再提交到Linux集群上
- Spark - 本地运行spark程序缺少hadoop winutils.exe
- Spark提交作业的流程以及作业是如何被触发在集群中运行的
- mac电脑的eclipse把mapreduce程序提交到hadoop2.x集群虚拟机上运行
- java写的spark程序的本地运行和集群运行
- java写的spark程序的本地运行和集群运行
- Spark:本地连接集群运行Saprk程序
- windows eclipse远程连接hadoop集群并提交任务运行
- 简单的java Hadoop MapReduce程序(计算平均成绩)从打包到提交及运行
- Spark在Windows下运行,本地提交sp…