本地Spark程序提交到hadoop集群运行流程
来源:互联网 发布:免费无限php空间 编辑:程序博客网 时间:2024/06/04 20:04
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.******.scalaprogramimport org.apache.spark.SparkContextimport org.apache.spark.SparkContext._import org.apache.spark.rdd.RDDimport scala.collection.mutable.LinkedListobject 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得到结果
由于涉及公司等个人信息,为了避免麻烦,做了处理导致图片有点难看,将就下哈哈。整个程序很简单,细心就可以了。
阅读全文
1 0
- 本地Spark程序提交到hadoop集群运行流程
- Hadoop本地提交到集群中
- scala编写的Spark程序远程提交到服务器集群上运行
- Eclipse提交代码到Spark集群上运行
- 提交第一个spark作业到集群运行
- 在本地将spark作业运行到远程集群
- Spark入门(二):打包程序、提交任务到集群
- Spark提交任务到集群
- Spark提交任务到集群
- Windows 上面搭建 Spark + Pycharm/idea scala/python 本地编写Spark程序,测试通过后再提交到Linux集群上
- Flink 代码方式提交程序到远程集群运行
- Spark集群模式&Spark程序提交
- 用maven管理spark应用程序,提交到spark on yarn 集群上运行
- spark mllib 应用程序开发及提交到spark集群运行--入门
- Spark on yarn--几种提交集群运行spark程序的方式
- spark学习7之IDEA下搭建Spark本地编译环境并上传到集群运行
- Spark提交作业的流程以及作业是如何被触发在集群中运行的
- java写的spark程序的本地运行和集群运行
- Android NDK系列(三)-AS编写C文件没有提示和不识别NULL
- python正则表达式
- java IO笔记(序列化与ObjectInputStream、ObjectOutputStream)
- 8月15日总结
- Windows阻止指定程序运行
- 本地Spark程序提交到hadoop集群运行流程
- sourceInsight4 破解笔记(完美破解)
- tensorflow代码组织格式
- Java集合工具类之Collections
- Spring单例模式与线程安全
- 支付
- Servlet的两种配置方式
- mysql 赋给用户权限 grant all privileges on
- jstorm任务调度总结