Spark大数据分析实战【1.1】
2.3 Spark编译用户可以通过Spark的默认构建工具SBT进行源码的编译和打包。当用户需要对源码进行二次开发时,则需要对源码进行增量编译,通过下面的方式读者可以实现编译和增量编译。(1)克隆Spark源码可通过克隆的方式克隆Spark源码,如图2-9所示。git clone https:// github.com/apache/spark这样将会从github将Spark源码下载到本地,建立本地的仓库。(2)编译Spark源码在Spark项目的根目录内执行编译和打包命令(如图2-10所示)。sbt/sbt assembly执行过程中会解析依赖和下载需要的依赖jar包。执行完成后会将所有jar包打包为一个jar包,用户便可以运行Spark集群和示例了。(3)增量编译在有些情况下,用户需要修改源码,修改之后如果每次都重新下载jar包或者对全部源码重新编译一遍,会很浪费时间,用户通过下面的增量编译方法,可以只对改变的源码进行编译。编译打包一个assembly的jar包。$ sbt/sbt clean assembly这时的Spark程序已经可以运行。用户可以进入spark-shell执行程序。$ ./bin/spark-shell配置export SPARK_PREPEND_CLASSES参数为true,开启增量编译模式。$ export SPARK_PREPEND_CLASSES=true继续使用spark-shell中的程序:$ ./bin/spark-shell这时用户可以对代码进行修改和二次开发:初始开发Spark应用,之后编译。编译Spark源码:$ sbt/sbt compile继续开发Spark应用,之后编译。$ sbt/sbt compile解除增量编译模式:$ unset SPARK_PREPEND_CLASSES返回正常使用spark-shell的情景。$ ./bin/spark-shell # Back to normal, using Spark classes from the assembly Jar如果用户不想每次都开启一个新的SBT会话,可以在compile命令前加上~。$ sbt/sbt ~ compile(4)查看Spark源码依赖图如果使用SBT进行查看依赖图(如图2-11所示),用户需要运行下面的命令:$ # sbt$ sbt/sbt dependency-tree如果使用Maven进行查看依赖图(如图2-11所示),用户需要运行下面的