一、 环境准备
- 运行环境需要安装jdk,并配置环境变量,本次使用的是jdk1.8;
- 使用到的开发工具是idea,并且安装scala和antlr插件,如果没有搜索到antlr插件,需要从网上下载一个插件包,导入到idea中,插件安装完成之后需要重启idea;
- 需要安装maven,并修改配置文件,主要修改本地仓库地址和国内镜像源;
antlr4插件地址
https://plugins.jetbrains.com/plugin/7358-antlr-v4/versions
二、环境搭建
- 下载源码,下载地址 https://github.com/apache/spark
- 直接使用idea的git-clone功能下载源码,并切换到稳定的branch-3.2分支
- 修改idea里的maven配置,jdk配置,配置的地址都是在上一步中安装好的地址;
- maven配置完成后会开始下载依赖,依赖下载完成之后,进行编译,网不好的需要等一段时间。
- 测试:编译完成之后,找到SQLQuerySuite这个类,里面会有很多测试方法,找其中一个运行,没有报错则运行成功。
三、报错及解决办法
- 编译过程中报错
1.There is insufficient memory for the java runtime environment to continue
2.控制台中文乱码
- 问题1解决办法: 表示java程序的运行内存不足,调大idea的运行内存,比如修改为2048M;同时要释放部分系统的内存;
- 问题二解决办法: 修改idea文件编码配置
- 3.编译时报错object SqlBaseParser is not a member of package org.apache.spark.sql.catalyst.parser
- 解决办法: 是因为没有下载到antlr相关的包,尝试多次刷新maven依赖进行下载,以及多次编译,最好是能通过vpn进行下载
- 4.在运行测试类方法的过程中,报错could not find spark-version-info.properties
- 解决办法:需要重新编译spark-core 在Spark的源码目录下 ,打开git bash,执行以下命令:
./build/spark-build-info ./core/target/scala-2.12/classes/ 3.3.0-SNAPSHOT