利用IDEA工具编译Spark源码(1.60~2.20)
来源:互联网 发布:方正字体识别软件 编辑:程序博客网 时间:2024/06/07 02:51
为了利用IDE工具调试Spark源码,分别在macOS上搭建了Spark1.60源码调试环境,在windows下搭建了Spark2.20调试环境。利用IDE编译Spark会出现一些通识性问题,下面将针对这些问题的解决方法做详细描述(macOS与windows通用)
准备
- IDEA 工具 https://www.jetbrains.com/idea/
- Spark 源码 https://spark.apache.org/
编译源码
导入项目
直接利用IDEA
导入Spark
工程,Import Project
中选择Import project from external model
中的Maven
。
一路next
到选择sdk
时配置好JDK
即可
配置对应版本的scala SDK
先安装scala plugin
,在设置中的插件管理器中安装scala
插件:
安装完成后,就需要配置对应版本的Scala SDK
了。这一步非常关键,如果配置出现了偏差,会导致一堆的错误。比如对于Spark1.6.0
版本,其项目名称为spark-parent_2.10
则需要配置scala 2.10
版本的编译器。(Spark2.20
对应着Scala2.11
) 具体的版本可以去参考官方文档。
配置方法如下:选择File -> Project Structure
中的Global Libraries
,点击+
号,选择正确的scala
版本,如果没有的话点击Download
下载。
点击ok
后选择添加到全部的modules
编译过程
在设置里面记得点上Rebuild
时clear project
第一次编译
第一次编译直接选择build project
即可。这时候会出现第一个问题:
Spark官方文档中这么说:
“Rebuild Project” can fail the first time the project is compiled, because generate source files are not automatically generated. Try clicking the “Generate Sources and Update Folders For All Projects” button in the “Maven Projects” tool window to manually generate these sources.”
在IDEA中进行如下操作:View->Tool Windows-> Maven Projects
右边会有Maven Projects
的目录栏,选择出问题的Flume Sink
,右键菜单选择Generate Sources and Update Folders
第二次编译
开始Rebuild
,1.60版本将直接编译成功:
而对于2.20
版本可能会出现以下问题:
spark\sql\hive-thriftserver\src\main\java\org\apache\hive\service\cli\thrift\ThriftCLIService.javaError:(52, 75) not found: value TCLIServicepublic abstract class ThriftCLIService extends AbstractService implements TCLIService.Iface, Runnable {………..
针对这种情况,只用在spark\sql\hive-thriftserver\src\gen\java
右键中点Mark Directory as->Sources Root
即可
跑案例
先配置好要跑的WordCount
,如下图设置,其中设置了本地运行,设置了WordCount
的输入。
这时候会出现如下错误:
这是没找到其依赖库导致的,打开./examples/spark-examples_2.10.iml
,将中间的scope="PROVIDED"
全部删除(观察了一下,默认为compile
,比手动去设置里面调效率高多了)重新Build
即可正确运行。
运行如下:
直接编译
如果不想用IDE配置各种编译环境,编译Spark就简单多了,编译如下:
经过一段时间的编译:
测试编译是否成功:
参考文献
https://siliconhalli.org/2017/02/09/spark-build-spark-from-source-on-windo/
https://github.com/linbojin/spark-notes/blob/master/ide-setup.md
http://chant00.com/2017/03/06/sparkSourceCompile/
- 利用IDEA工具编译Spark源码(1.60~2.20)
- mac下利用IDEA工具Maven编译Spark源码
- 利用IDEA查看和修改spark源码
- 使用IDEA搭建Spark源码环境及编译Spark源码
- idea 查看 spark 源码 ,并用 maven 编译
- 编译Spark-1.6.3源码--Maven工具
- 使用IntelliJ IDEA编译spark-1.3.0源码
- intellij idea直接编译spark源码及问题解决
- intellij idea 导入maven编译好的spark源码
- idea maven 编译 spark
- IDEA阅读Spark源码
- 使用 IntelliJ IDEA 导入 Spark 最新源码及编译 Spark 源代码
- Spark2.0源码阅读---spark源码编译与IDEA导入搭建阅读环境
- Spark源码IDEA远程调试
- 使用IDEA Debug Spark源码
- IDEA编译smalidea源码
- IDEA编译smalidea源码
- spark源码编译
- git仓库迁移而且不丢失log的方法
- Spring中default-autowire与autowire区别
- hdu1010(DFS+奇偶剪枝)
- Gradle传给虚拟机的参数
- Java 定时任务
- 利用IDEA工具编译Spark源码(1.60~2.20)
- Android中内容观察者的使用---- ContentObserver
- Spring的注解@Qualifier小结
- MultipartFile,MockMultipartFile
- 批量杀死多个进程 linux kill
- Gradle入门系列(1):简介
- 服务器相关重启命令
- 搜索引擎研究之一:选型
- Oracle修改数据库用户名