本文演示spark源码在idea编辑器上编译和提交任务
1、从网站上下载spark源码,在idea中 点击 VCS->CheckOut form Version Control->Git 把代码下载到本地
https://github.com/apache/spark
2、为了能让本地编译更快一些,设置父pom.xml 中加上oschina的maven源
<repository> <id>nexus</id> <name>local private nexus</name> <url>http://maven.oschina.net/content/groups/public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository>
3、执行 mvn clean idea:idea 顺便说一下本地的mvn环境要在3.3.x以上
4、打开idea,点击菜单 File->Open-> 在弹出窗口中找spark源码然后打开
5、找到Master.scala然后点击运行;
然后在浏览器中查看是否运行成功
6、接着运行worker,找到Worker.scala,右键运行,但是这里需要做点设置,在Program arguments:加上参数 --webui-port 8081 spark://192.168.3.107:7077 (注:有时候localhost不是很管用,要看系统的设置,最好使用ip)
这时候刷新浏览器会发现worker 已经被注册进来了
8、我们写个spark程序提交执行试试看,新建一个scala maven工程,用于统计用户信息,工程下载见附件,核心代码如下:
package com.zhanjun.spark.learn import org.apache.spark.{SparkConf, SparkContext} object UserInfoCount { def main(args: Array[String]) { if (args.length == 0) { System.err.println("Usage: UserInfoCount <file1> <file2>") System.exit(1) } val conf = new SparkConf().setAppName("UserInfoCount") val sc = new SparkContext(conf) // 读取数据源,以“,”号分隔数据,过滤每行数据为8个字段 val userInfoRDD = sc.textFile(args(0)).map(_.split(",")).filter(_.length == 8) // 按照地区进行统计,其中地区字段为第4个字段,合计后按照统计量进行排序 val blockCountRDD = userInfoRDD.map(x => (x(3), 1)).reduceByKey(_ + _).map(x => (x._2, x._1)).sortByKey(false).map(x => (x._2, x._1)) // 按手机号照前三位号码进行统计,其中手机号为第3个字段,合计后按照手机号码前三位数字排序(从小到大) val phoneCountRDD = userInfoRDD.map(x => (x(2).substring(0, 3), 1)).reduceByKey(_ + _).sortByKey(true) // 对两部分数据进行合并,然后输出到HDFS val unionRDD = blockCountRDD.union(phoneCountRDD) //repartition设置RDD中partition数量 unionRDD.repartition(1).saveAsTextFile(args(1)) sc.stop() } }
通过 mvn clean package 对工程打包,把users_txt.zip解压到相应的目录中。
9、我们回到spark源码的idea,通过idea提交job试试 找到org.apache.spark.deploy.SparkSubmit,右键运行,然后设置对应的参数
--class com.zhanjun.spark.learn.UserInfoCount --master local /home/admin/workspace/spark-work/UserInfoCount/target/UserInfoCount-1.0-SNAPSHOT.jar file:///home/admin/temp/users.txt file:///home/admin/temp/output/
我们可以发现 /home/admin/temp/output目录下面会生成对应的计算结果.
过程中使用了spark官网下载的源码 在sparksubmit时一直报错貌似是akka的初始化失败,后然从git上下载代码一切没有问题
相关推荐
Apache Spark源码剖析,Apache Spark源码剖析,Apache Spark源码剖析
spark2.0版本的源码,此版本为当前的稳定版本,而且此源码带有注释的
Spark源码解读迷你 RDD、Spark Submit、Job、Runtime、Scheduler、Spark Storage、Shuffle、Standlone算法、Spark On yarn。。。
Spark 源码分析 出自他人: 王联辉lianhuiwang09@gmail.com 这里只是搬运工,1分造福大家。 很不错的资源,大家可以查考!
本文档详细介绍了搭建SPARK源码阅读环境的步骤及方法。SPARK源码的阅读有助于了解SPARK运行的内部机制,便于优化,对有志于大数据学习及科研的人员都是很重要的。
《Apache Spark源码剖析》以Spark 1.02版本源码为切入点,着力于探寻Spark所要解决的主要问题及其解决办法,通过一系列精心设计的小实验来分析每一步背后的处理逻辑。 《Apache Spark源码剖析》第3~5章详细介绍了...
学习Spark源码的书,研究Hadoop、Spark等大数据技术的可以看看
spark 源码解读迷你书 ,推荐 先搭建好环境,intelij整好,开看
Spark源码
spark源码下载安装启动,包括遇到的问题,下载地址,.编译spark源码
spark源码结构,spark官方源码详细说明,各个包是干什么用的
spark源码阅读笔记 spark源码阅读笔记 spark源码阅读笔记 spark源码阅读笔记
spark源码:spark-master.zip。方便不能登录GitHub的小伙伴下载。如果实在需要留言,可以私下给。
个人对spark源码的一些分析,在个人学习和使用spark过程中,结合spark源码和实践进行全方位的分析,希望对大家有所帮助
Apache Spark 源码剖析 Apache Spark 源码剖析 Apache Spark 源码剖析
Spark-2.3.1源码解读。 Spark Core源码阅读 Spark Context 阅读要点 Spark的缓存,变量,shuffle数据等清理及机制 Spark-submit关于参数及部署模式的部分解析 GroupByKey VS ReduceByKey OrderedRDDFunctions...
Hive on Spark源码分析,实际场景中会遇到需求:将Hive默认的执行引擎MapReduce换成Spark或者Tez。
spark源码分析,RDD、Iterator、Job、DAG、Stage、Taskset、task等