#备忘录 SPARK源码
两种构建方法,分别是maven和sbt。这里采用maven。 我的环境是
- macOS Sierra
- maven 3.5.0
- scala 2.11
- spark code 2.3.0
- jdk8
- Idea 2017
scala,java和maven首先肯定要安装好,详细安装步骤网上很多资料。 下面所有操作都是在Idea中完成
基本流程
- 点击[File]->[Open]选择你的spark跟路径。或者在控制台中cd到跟路径下执行[mvn idea:idea],然后就能构造一个idea的project工程。这里强烈推荐给maven加一个国内的mirror。
- 等全部完成后,用idea再build的话。可能会报某些class找不到,而且工程中的确没有这些class。这些是avro对象,代码是需要生成的。我这里遇到的模块是Flume Sink,打开Maven Projects窗口,在右击Flume Sink模块,选择[Generate sources and update folder]。现在利用Idea进行Build应该是没有问题的。
-
还有就是 sparksql 的 sql 语法解析也需要代码生成,同样的操作。如果生成代码后,parser.SqlBaseParser._ 依然无法找到,确认 target 目录下面的generated-sources 中的 antlr4是否为代码文件夹,如果不是的话,右击 antlr4 并选择[Mark Directory as]中的 [Generated Sources Root] 选项即可
- java.lang.ClassNotFoundException: org.apache.spark.sql.SparkSession 最后进行调试,这里还要做一些小修改。我这里执行的example模块下的JavaSparkPi类。可以先运行一下试试。可能会遇到的是报错是ClassNotFound的异常。把Project structure打开。切到examples模块下的dependencies标签页。会发现很多依赖的scope是provide,直接到pom文件中将scope都改成compile。