一、 环境准备

  • 运行环境需要安装jdk,并配置环境变量,本次使用的是jdk1.8;
  • 使用到的开发工具是idea,并且安装scala和antlr插件,如果没有搜索到antlr插件,需要从网上下载一个插件包,导入到idea中,插件安装完成之后需要重启idea;
  • 需要安装maven,并修改配置文件,主要修改本地仓库地址和国内镜像源;
antlr4插件地址
https://plugins.jetbrains.com/plugin/7358-antlr-v4/versions

spark源码用的什么语言 spark源码在哪下载_spark

二、环境搭建

  • 下载源码,下载地址 https://github.com/apache/spark
  • 直接使用idea的git-clone功能下载源码,并切换到稳定的branch-3.2分支

spark源码用的什么语言 spark源码在哪下载_ide_02


spark源码用的什么语言 spark源码在哪下载_maven_03

  • 修改idea里的maven配置,jdk配置,配置的地址都是在上一步中安装好的地址;

spark源码用的什么语言 spark源码在哪下载_maven_04


spark源码用的什么语言 spark源码在哪下载_intellij-idea_05

  • maven配置完成后会开始下载依赖,依赖下载完成之后,进行编译,网不好的需要等一段时间。
  • 测试:编译完成之后,找到SQLQuerySuite这个类,里面会有很多测试方法,找其中一个运行,没有报错则运行成功。

spark源码用的什么语言 spark源码在哪下载_ide_06


spark源码用的什么语言 spark源码在哪下载_spark源码用的什么语言_07

三、报错及解决办法

  • 编译过程中报错
    1.There is insufficient memory for the java runtime environment to continue
    2.控制台中文乱码

spark源码用的什么语言 spark源码在哪下载_spark源码用的什么语言_08

  • 问题1解决办法: 表示java程序的运行内存不足,调大idea的运行内存,比如修改为2048M;同时要释放部分系统的内存;

spark源码用的什么语言 spark源码在哪下载_maven_09

  • 问题二解决办法: 修改idea文件编码配置

spark源码用的什么语言 spark源码在哪下载_spark源码用的什么语言_10

  • 3.编译时报错object SqlBaseParser is not a member of package org.apache.spark.sql.catalyst.parser
  • 解决办法: 是因为没有下载到antlr相关的包,尝试多次刷新maven依赖进行下载,以及多次编译,最好是能通过vpn进行下载

spark源码用的什么语言 spark源码在哪下载_ide_11

  • 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

spark源码用的什么语言 spark源码在哪下载_intellij-idea_12