本地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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 微信不支持计步怎么办 肝癌二次介入后头晕心慌怎么办 跑步跑得胃疼怎么办 如果世界上的猪都死了怎么办 我和我老婆吵架怎么办 我和我老婆吵架了怎么办 智障人士父母死后怎么办 依赖性太强的人怎么办 高考只有一门写准考证号怎么办 ps做动画不流畅怎么办 ff15引擎剑卖了怎么办 fgo从者满了怎么办 游泳池的水喝了怎么办 月球没有水怎么办秒懂 请了新财神旧的怎么办 报警校体检没过怎么办 ae中建立了文本打不出字怎么办 宝宝3岁内八字怎么办 一岁半宝宝走路内八字怎么办 一岁宝宝走路内八字怎么办 宝宝1岁了内八字怎么办 宝宝学走路内八字怎么办 人胖走路磨腿怎么办 2岁半宝宝内八字怎么办 大狗跑步累倒怎么办? 拉小提琴的姿势不正确怎么办 屁股摔倒了很痛怎么办 腿摔倒了破了怎么办 骑车摔倒腿肿了怎么办 鸟翅膀老是掉着怎么办 有老人摔倒被讹怎么办 剑鞘囊肿手术后黏连怎么办 上古卷轴5变脏了怎么办 上古卷轴5病了怎么办 法院判的罚金没钱交怎么办 上古卷轴5亲吻出题怎么办 老滚5马不见了怎么办 上古卷轴5杀鸡了怎么办 上古卷轴5东西太多怎么办 上古卷轴天际杀鸡了怎么办 上古卷轴5偷东西被发现怎么办