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

一、spark源码包下载&解压

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.7
peterpan@PeterdeMBP spark-2.4.7 % pwd
/Users/peterpan/Documents/work/projects/idea/spark-2.4.7
peterpan@PeterdeMBP spark-2.4.7 % mvn -T 4 -DskipTests clean package
peterpan@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分区数又近了一步

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

【spark2】【源码学习】【环境编译】在idea导入spark源码,执行example并debug相关推荐

  1. Java字节码学习笔记(一):Java字节码是什么?

    文章目录 1.字节码来源 2.字节码结构 2.1.生成字节码 2.2.字节码结构 2.2.1.魔数(Magic Number 2.2.2.版本号(Version) 2.2.3.常量池(Constant ...

  2. Java之美[从菜鸟到高手演变]之Spring源码学习 - 环境搭建

    准备工作 1.下载安装STS(Spring Tool Suite),在eclipse market里直接搜索.下载.安装. 2.下载安装gradle, Spring源码使用gradle构建,下载后解压 ...

  3. 非常实用,IDEA 搭建JDK源码学习环境(可修改+断点+笔记)

    点击关注公众号,实用技术文章及时了解 来源:chenxiao.blog.csdn.net/article/details/104369824 在学习JDK源码的时候,自然少不了代码的调试. 阅读与调试 ...

  4. Spark源码剖析(一):如何将spark源码导入到IDEA中

    由于近期准备深入研究一下Spark的核心源码,所以开了这一系列用来记录自己研究spark源码的过程! 想要读源码,那么第一步肯定导入spark源码啦(笔者使用的是IntelliJ IDEA),在网上找 ...

  5. 以太坊源码学习(一) 正本清源

    以太坊源码学习(一)正本清源 背景 geth源码一直在不断增加,优化,发展到现在已经非常庞大,第一次看geth源码,会有不小的难度.虽然如此,还是可以从geth仓库的第一个commit开始,这时的代码 ...

  6. VUE源码学习第一篇--前言

    一.目的 前端技术的发展,现在以vue,react,angular为代表的MVVM模式以成为主流,这三个框架大有三分天下之势.react和angular有facebook与谷歌背书,而vue是以一己之 ...

  7. Vue源码学习之initInjections和initProvide

    Vue源码学习之initInjections和initProvide 在进行源码阅读之前先让我们了解一个概念:provide/inject,这个是Vue在2.2.0版本新增的一个属性,按照Vue官网的 ...

  8. 【Android 源码学习】SharedPreferences 源码学习

    第一章:SharedPreferences 源码学习 文章目录 第一章:SharedPreferences 源码学习 Android SharedPreferences的缺陷 MMKV.Jetpack ...

  9. Java并发包源码学习系列:同步组件CountDownLatch源码解析

    文章目录 CountDownLatch概述 使用案例与基本思路 类图与基本结构 void await() boolean await(long timeout, TimeUnit unit) void ...

  10. jquery源码学习笔记三:jQuery工厂剖析

    jquery源码学习笔记二:jQuery工厂 jquery源码学习笔记一:总体结构 上两篇说过,query的核心是一个jQuery工厂.其代码如下 function( window, noGlobal ...

最新文章

  1. 如何在您的笔记本上搭建View 演示环境 -5.配置View Connection Server
  2. Matplotlib的几个典型绘制实验
  3. Jenkins简介安装使用
  4. 中文分词算法python代码_python实现中文分词FMM算法实例
  5. 《数据库原理与应用(第3版)》——小结
  6. 如何在 ASP.Net Core 中使用 LoggerMessage
  7. Swagger 官方 Starter 配上这个增强方案是真的香!
  8. php获取继承类方法吗,php如何获取当前类名,继承中的问题?
  9. 蚂蚁森林:不存在网友反馈的“没有造林”的情况 干旱造成梭梭矮小
  10. OSx86的来龙去脉
  11. Python压缩解压–gzip
  12. 【集合论】关系性质 ( 自反性 | 自反性定理 | 反自反性 | 反自反性定理 | 示例 )
  13. 如果通过这次面试我们单位录用了你,但工作一段时间却发现你根本不适合这个职位,你怎么办?(保留)
  14. 如何设置阿里云安全组?开放和关闭端口很简单
  15. 华为手机打开图片很慢是怎么回事_华为手机微信打开很慢怎么办
  16. 工具之DBeaver安装及使用
  17. PMP考前冲刺2.20 | 2023新征程,一举拿证
  18. MySQL 安装详细步骤
  19. 【Java8新特性】关于Java8中的日期时间API,你需要掌握这些!!
  20. ansible自动化运维工具的详细介绍、使用、工作原理、安装方式、与被管理节点建立信任关系等等

热门文章

  1. 编译错误:invalid types ‘int[int]‘ for array subscrip-markdown编辑器
  2. 转】用Hadoop构建电影推荐系统
  3. 使用 Sprinkles 构建您自己的类型安全版本的 Tailwind CSS
  4. Stacked Hourglass Networks简析
  5. Android知识点 015 —— 2.3.9 CountDownTimer倒计时(补充 疯狂Android讲义)
  6. mapbox-gl:创建Marker
  7. layui laydate设置最小时间为当前时间
  8. Map Coloring(翻译)
  9. Codeforces Round #368 (Div. 2)(C. Pythagorean Triples 勾股数规律)
  10. 方舟同步服务器信息,方舟服务器备份和数据库备份