博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【spark2】【源码学习】【环境编译】在idea导入spark源码,执行example并debug
阅读量:2156 次
发布时间:2019-05-01

本文共 4619 字,大约阅读时间需要 15 分钟。

一直想搞清楚spark读取不同数据源时的分区是怎么决定的,趁着国庆有时间终于下决心来做这个事。关于这个分区数,很多说法,最后决定自己看下源码,也算是接触spark源码的第一步吧。挺多坑,零零散散花了2天多的时间,总算跑通spark源码里面的example了。mark一下。

一、spark源码包下载&解压

(可能需要翻墙)

在这里插入图片描述
下载完,拷贝到自己想放的目录,双击即可解压得到项目文件夹。

二、安装maven&scala

2.1、 先到刚刚解压出来的spark源码根目录,打开pom.xml文件看下maven和scala的版本,安装对应的版本。

scala - 2.11.12

maven - 3.5.4

在这里插入图片描述

在这里插入图片描述
2.2、安装好后,使用命令查看版本

maven的安装注意将源修改成阿里云的源,不然会慢到怀疑人生…

在这里插入图片描述

到这里编译前的准备工作就完成了

三、编译

peterpan@PeterdeMBP ~ % cd Documents/work/projects/idea/spark-2.4.7peterpan@PeterdeMBP spark-2.4.7 % pwd/Users/peterpan/Documents/work/projects/idea/spark-2.4.7peterpan@PeterdeMBP spark-2.4.7 % mvn -T 4 -DskipTests clean packagepeterpan@PeterdeMBP spark-2.4.7 %peterpan@PeterdeMBP spark-2.4.7 %.........# after 30-60分钟...[INFO] [INFO] --- maven-source-plugin:3.0.1:jar-no-fork (create-source-jar) @ spark-examples_2.11 ---[INFO] Building jar: /Users/peterpan/Documents/work/projects/idea/spark-2.4.7/examples/target/spark-examples_2.11-2.4.7-sources.jar[INFO] [INFO] --- maven-source-plugin:3.0.1:test-jar-no-fork (create-source-jar) @ spark-examples_2.11 ---[INFO] Building jar: /Users/peterpan/Documents/work/projects/idea/spark-2.4.7/examples/target/spark-examples_2.11-2.4.7-test-sources.jar[INFO] ------------------------------------------------------------------------[INFO] Reactor Summary:[INFO] [INFO] Spark Project Parent POM 2.4.7 ..................... SUCCESS [  2.603 s][INFO] Spark Project Tags ................................. SUCCESS [  5.171 s][INFO] Spark Project Sketch ............................... SUCCESS [ 13.367 s][INFO] Spark Project Local DB ............................. SUCCESS [  6.400 s][INFO] Spark Project Networking ........................... SUCCESS [ 10.813 s][INFO] Spark Project Shuffle Streaming Service ............ SUCCESS [  6.643 s][INFO] Spark Project Unsafe ............................... SUCCESS [ 19.661 s][INFO] Spark Project Launcher ............................. SUCCESS [ 10.826 s][INFO] Spark Project Core ................................. SUCCESS [02:59 min][INFO] Spark Project ML Local Library ..................... SUCCESS [ 32.702 s][INFO] Spark Project GraphX ............................... SUCCESS [01:19 min][INFO] Spark Project Streaming ............................ SUCCESS [02:24 min][INFO] Spark Project Catalyst ............................. SUCCESS [04:15 min][INFO] Spark Project SQL .................................. SUCCESS [03:46 min][INFO] Spark Project ML Library ........................... SUCCESS [04:41 min][INFO] Spark Project Tools ................................ SUCCESS [  5.573 s][INFO] Spark Project Hive ................................. SUCCESS [03:16 min][INFO] Spark Project REPL ................................. SUCCESS [ 29.623 s][INFO] Spark Project Assembly ............................. SUCCESS [  5.777 s][INFO] Spark Integration for Kafka 0.10 ................... SUCCESS [ 52.390 s][INFO] Kafka 0.10+ Source for Structured Streaming ........ SUCCESS [01:44 min][INFO] Spark Project Examples ............................. SUCCESS [ 49.188 s][INFO] Spark Integration for Kafka 0.10 Assembly .......... SUCCESS [  8.700 s][INFO] Spark Avro 2.4.7 ................................... SUCCESS [01:14 min][INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 17:01 min (Wall Clock)[INFO] Finished at: 2020-10-05T19:08:05+08:00[INFO] ------------------------------------------------------------------------peterpan@PeterdeMBP spark-2.4.7 %

四、导入idea

4.1、编译完成后,导入idea,

【open or import】 >> {spark-2.4.7}/pom.xml >> Open as Project

在这里插入图片描述
在这里插入图片描述

五、修改配置

5.1、将idea默认的maven改成上面安装的maven路径

【Preferences】 >> 【Build,Execution,Deployment】 >> 【Build Tools】 >> 【Maven】

在这里插入图片描述

5.2、设置一些执行参数

【Add Configuration】>> 【+】 >> 【Application 】

在这里插入图片描述
5.3、运行测试类【JavaWordCount】 && 报错
在这里插入图片描述

六、报错解决

6.1、跟spark相关的【java.lang.ClassNotFoundException】,原因都是example module中pom.xml spark的依赖scope是provided。

粗暴的方法:

【<scope>provided</scope> 】替换为【<!–<scope>provided</scope>–>】
在这里插入图片描述

6.2、这个报错仍是example module 中 pom.xml provided的问题

hadoop.deps.scope 设置为compile

hive.deps.scope 设置为compile
parquet.deps.scope 设置为compile
ps. 设置为compile等同于注释掉scope,因为默认是compile
在这里插入图片描述
在这里插入图片描述

6.3、这个也是provide的问题,但不在example module。而是在根目录的pom.xml

将根目录中pom.xml的guava对应的scope设置为compile

在这里插入图片描述
在这里插入图片描述

6.4、这个也是provide的问题,但不在example module。而是在根目录的pom.xml

在根目录pom.xml 将 org.eclipse.jetty 对应的provided改为compile

在这里插入图片描述
在这里插入图片描述

6.5、报错跟scala相关的类 Not Found

【File】>> 【Project Structure】>> 【global libraries】 >> 【+】 >> 【选择scala版本】 >> 【右键】>> 【scala add to modules】>> 【spark-example_2.11】

在这里插入图片描述

6.6、成功跑通,后面

在这里插入图片描述
6.7、可以debug,后续就可以随意查看各段代码的值,离了解spark分区数又近了一步
在这里插入图片描述

环境问题总是各种各样的坑,如果遇到其他报错,可以留言一起研究。

转载地址:http://julwb.baihongyu.com/

你可能感兴趣的文章
C++/C 宏定义(define)中# ## 的含义 宏拼接
查看>>
Git安装配置
查看>>
linux中fork()函数详解
查看>>
C语言字符、字符串操作偏僻函数总结
查看>>
Git的Patch功能
查看>>
分析C语言的声明
查看>>
TCP为什么是三次握手,为什么不是两次或者四次 && TCP四次挥手
查看>>
C结构体、C++结构体、C++类的区别
查看>>
进程和线程的概念、区别和联系
查看>>
CMake 入门实战
查看>>
绑定CPU逻辑核心的利器——taskset
查看>>
Linux下perf性能测试火焰图只显示函数地址不显示函数名的问题
查看>>
c结构体、c++结构体和c++类的区别以及错误纠正
查看>>
Linux下查看根目录各文件内存占用情况
查看>>
A星算法详解(个人认为最详细,最通俗易懂的一个版本)
查看>>
利用栈实现DFS
查看>>
逆序对的数量(递归+归并思想)
查看>>
数的范围(二分查找上下界)
查看>>
算法导论阅读顺序
查看>>
Windows程序设计:直线绘制
查看>>