`

Spark源码倒腾

 
阅读更多

本文演示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上下载代码一切没有问题

  • 大小: 105.9 KB
  • 大小: 84.3 KB
  • 大小: 28 KB
  • 大小: 105 KB
  • 大小: 17.4 KB
  • 大小: 38.7 KB
  • 大小: 87.6 KB
分享到:
评论

相关推荐

    Spark源码剖析

    Spark源码剖析是一门深入探索Apache Spark底层实现原理的课程,其主要内容包括对Spark源码的详细解读和分析。Apache Spark是一个开源的分布式计算系统,提供了快速而通用的计算引擎。1.02版本作为课程的切入点,是一...

    Spark源码深度解读

    Spark源码解读迷你 RDD、Spark Submit、Job、Runtime、Scheduler、Spark Storage、Shuffle、Standlone算法、Spark On yarn。。。

    Spark源码分析.pdf

    《Spark源码分析》这本书是针对那些希望深入了解大数据处理框架Spark以及与其紧密相关的Hadoop技术的专业人士所编写的。Spark作为一个快速、通用且可扩展的数据处理引擎,已经在大数据领域占据了重要地位,而深入...

    spark 源码分析

    《Apache Spark源码剖析》以Spark 1.02版本源码为切入点,着力于探寻Spark所要解决的主要问题及其解决办法,通过一系列精心设计的小实验来分析每一步背后的处理逻辑。 《Apache Spark源码剖析》第3~5章详细介绍了...

    spark 源码解读迷你书

    《Spark源码解读迷你书》是一本专注于深入理解Apache Spark核心源码的书籍,适合对大数据处理技术有深厚兴趣并且想要探索Spark内部机制的读者。在阅读这本书之前,建议先搭建好Spark开发环境,比如使用Intelij IDEA...

    spark源码结构,源码说明

    Spark源码结构解析 Spark作为一个流行的分布式计算框架,其源码结构复杂且深奥,但理解它对于深入学习和优化Spark应用至关重要。源码结构主要分为几个关键部分,包括核心库、模块化组件以及插件机制等。以下是对...

    Hive on Spark源码分析DOC

    Hive on Spark源码分析 Hive on Spark 源码分析是指将 Hive 默认的执行引擎 MapReduce 换成 Spark 或者 Tez,以满足实际场景中的需求。本文将对 Hive on Spark 的源码进行深入分析,涵盖其基本原理、运行模式、Hive...

    Spark-2.3.1源码解读

    Spark-2.3.1源码解读。 Spark Core源码阅读 Spark Context 阅读要点 Spark的缓存,变量,shuffle数据等清理及机制 Spark-submit关于参数及部署模式的部分解析 GroupByKey VS ReduceByKey OrderedRDDFunctions...

    大数据Spark源码

    《深入解析Spark源码:大数据处理的基石》 Spark,作为大数据处理领域的明星框架,以其高效、易用和可扩展性赢得了广泛的认可。Spark源码的学习对于深入理解其内部机制,提升开发效率,以及解决实际问题具有至关...

    Spark源码....

    ### Spark源码解析与应用实例 #### 一、Spark源码概述 Spark 是一款开源的大规模数据处理框架,因其高效性和灵活性,在大数据处理领域占据着举足轻重的地位。了解Spark源码不仅可以帮助开发者深入理解其内部机制,...

    spark源码分析

    《Spark源码分析》 Spark,作为大数据处理领域的重要框架,以其高效、易用和弹性伸缩等特性,被广泛应用于数据处理、机器学习和实时流处理等多个场景。本资料将深入探讨Spark的核心思想和源码,帮助读者从底层原理...

    spark源码:spark-master.zip

    spark源码:spark-master.zip。方便不能登录GitHub的小伙伴下载。如果实在需要留言,可以私下给。

    spark源码分析.pdf

    Spark源码分析是一项深入理解Apache Spark内部工作机制的重要途径。Apache Spark是一个快速、通用、可扩展的大数据处理平台,拥有着内存计算的特性,它提供了RDD(弹性分布式数据集)、DAG(有向无环图)、stage、...

    spark1.3.1源码下载

    源码下载是深入理解Spark内部机制、进行定制化开发或优化性能的基础步骤。 Spark的核心组件包括: 1. **Spark Core**:这是Spark的基础,提供分布式任务调度、内存管理以及错误恢复机制。 2. **Spark SQL**:将SQL...

    openfire spark 2.7.0源码

    理解Spark源码需要对XMPP的基本概念如JID( Jabber ID)、Presence、Message和IQ(Information Query)等有深入理解。 2. **Openfire服务器集成**:Spark与Openfire服务器紧密集成,通过XMPP连接进行通信。源码中...

Global site tag (gtag.js) - Google Analytics