深入理解Spark:核心思想与源码分析. 1.4 Spark源码编译与调试

简介:

1.4 Spark源码编译与调试

1.下载Spark源码

首先,访问Spark官网http://spark.apache.org/,如图1-18所示。

 

图1-18 Spark官网

单击Download Spark按钮,在下一个页面找到git地址,如图1-19所示。

 

图1-19 Spark官方git地址

打开Git Bash工具,输入git clone git://github.com/apache/spark.git命令将源码下载到本地,如图1-20所示。

 

图1-20 下载Spark源码

2.构建Scala应用

使用cmd命令行进到Spark根目录,执行sbt命令。会下载和解析很多jar包,要等很长时间,笔者大概花了一个多小时才执行完。

3.使用sbt生成Eclipse工程文件

等sbt提示符(>)出现后,输入Eclipse命令,开始生成Eclipse工程文件,也需要花费很长时间,笔者本地大致花了40分钟。完成时的状况如图1-21所示。

 

图1-21 sbt编译过程

现在我们查看Spark下的子文件夹,发现其中都生成了.project和.classpath文件。比如mllib项目下就生成了.project和.classpath文件,如图1-22所示。

 

图1-22 sbt生成的项目文件

4.编译Spark源码

由于Spark使用Maven作为项目管理工具,所以需要将Spark项目作为Maven项目导入Eclipse中,如图1-23所示。

单击Next按钮进入下一个对话框,如图1-24所示。

 

图1-23 导入Maven项目

全选所有项目,单击Finish按钮,这样就完成了导入,如图1-25所示。

 

导入完成后,需要设置每个子项目的build path。右击每个项目,选择“Build Path”→ “Configure Build Path…”,打开Java Build Path界面,如图1-26所示。

 

图1-26 Java编译目录

单击Add External JARs按钮,将Spark项目下的lib_managed文件夹的子文件夹bundles和jars内的jar包添加进来。

lib_managed/jars文件夹下有很多打好的spark的包,比如:spark-catalyst_2.10-1.3.2-SNAPSHOT.jar。这些jar包有可能与你下载的Spark源码的版本不一致,导致你在调试源码时,发生jar包冲突。所以请将它们排除出去。

Eclipse在对项目编译时,笔者本地出现了很多错误,有关这些错误的解决建议参见附录H。所有错误解决后运行mvn clean install,如图1-27所示。

5.调试Spark源码

以Spark源码自带的JavaWordCount为例,介绍如何调试Spark源码。右击JavaWord-Count.java,选择“Debug As”→“Java Application”即可。如果想修改配置参数,右击JavaWordCount.java,选择“Debug As”→“Debug Configurations…”,从打开的对话框中选择JavaWordCount,在右侧标签可以修改Java执行参数、JRE、classpath、环境变量等配置,如图1-28所示。

读者也可以在Spark源码中设置断点,进行跟踪调试。

相关文章
|
6月前
|
SQL 分布式计算 大数据
【大数据技术Spark】DStream编程操作讲解实战(图文解释 附源码)
【大数据技术Spark】DStream编程操作讲解实战(图文解释 附源码)
139 0
|
6月前
|
Java Shell 分布式数据库
【大数据技术Hadoop+Spark】HBase数据模型、Shell操作、Java API示例程序讲解(附源码 超详细)
【大数据技术Hadoop+Spark】HBase数据模型、Shell操作、Java API示例程序讲解(附源码 超详细)
154 0
|
6月前
|
分布式计算 Java 大数据
【大数据技术Hadoop+Spark】HDFS Shell常用命令及HDFS Java API详解及实战(超详细 附源码)
【大数据技术Hadoop+Spark】HDFS Shell常用命令及HDFS Java API详解及实战(超详细 附源码)
692 0
|
6月前
|
SQL 分布式计算 数据库
【大数据技术Spark】Spark SQL操作Dataframe、读写MySQL、Hive数据库实战(附源码)
【大数据技术Spark】Spark SQL操作Dataframe、读写MySQL、Hive数据库实战(附源码)
240 0
|
6月前
|
分布式计算 大数据 Scala
【大数据技术Hadoop+Spark】Spark RDD创建、操作及词频统计、倒排索引实战(超详细 附源码)
【大数据技术Hadoop+Spark】Spark RDD创建、操作及词频统计、倒排索引实战(超详细 附源码)
277 1
|
1月前
|
分布式计算 大数据 Java
大数据-86 Spark 集群 WordCount 用 Scala & Java 调用Spark 编译并打包上传运行 梦开始的地方
大数据-86 Spark 集群 WordCount 用 Scala & Java 调用Spark 编译并打包上传运行 梦开始的地方
21 1
大数据-86 Spark 集群 WordCount 用 Scala & Java 调用Spark 编译并打包上传运行 梦开始的地方
|
6月前
|
分布式计算 Java Scala
Spark-Adaptive编译和打包
Spark-Adaptive编译和打包
35 0
Spark-Adaptive编译和打包
|
6月前
|
分布式计算 Java Hadoop
Spark3.3.0源码编译补充篇-抓狂的证书问题
Spark3.3.0源码编译补充篇-抓狂的证书问题
44 0
|
6月前
|
分布式计算 Java 测试技术
肝Spark源码的若干骚操作
肝Spark源码的若干骚操作
48 0
|
6月前
|
分布式计算 安全 Java
Spark 编译出现 InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
Spark 编译出现 InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
167 0