文章目录
- :rose: spark
-
- 1、源码编辑
-
- 1.1、环境准备
- 1.2、官网下载Spark 源码
- 1.3、使用maven指令编译
- 1.4、代码测试
? spark
1、源码编辑
为了深入学习saprk,想看看源码,故自己down了源码,采用maven 编辑了一下。记录代码编译过程以及遇见的问题
1.1、环境准备
- windows10
- IDEA2017
- Maven 3.6.3
- JDK 1.8 (自Spark 2.2.0起,对Java 7的支持已被删除!)
- scala 2.11.8 (注意和spark 版本匹配)
- hadoop 2.7
1.2、官网下载Spark 源码
-
下载地址(选择自己需要的版本)
https://archive.apache.org/dist/spark/
-
设置maven 参数
set MAVEN_OPTS="-Xmx2g -XX:ReservedCodeCacheSize=512m"# 查看 mvn -version
1.3、使用maven指令编译
将下载好后的 saprk.tgz包解压,进入解压目录 ,进入 git base 界面(鼠标右键)
-
执行指令
# -DskipTests 跳过测试编译 ./build/mvn -DskipTests clean package
运行结果如下,编译成功
该过程需要一段时间,如果编译失败,重新执行编译指令。重新可能会遇到编译报错,删除某个jar 包权限不够或者正在使用某jar包,此时可以打开任务管理器 找到 java vm 结束任务,重新执行指令
1.4、代码测试
-
使用idea 打开编辑后的spark 项目文件夹
等待加载indexing,不用选import sbt project
-
找一个spark官方deno 运行测试一下
- “Rebuild Project” 第一次编译项目的时候可能失败,选中所有,点击这个按钮“Generate Sources and Update Folders For All Projects”
-
执行测试类的时候出现Exception in thread “main” java.lang.NoClassDefFoundError: 错误
解决方法:
File -> Project Structure -> Modules -> spark-examples_2.11 -> Dependencies 添加依赖 jars -> {spark dir}/assembly/target/scala-2.11/jars/ -
这里如果本地没有配置hadoop环境,会出现下面报错信息
ERROR Shell: Failed to locate the winutils binary in the hadoop binary path java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
-
代码启动前需要指定一下 master[] 不指定会报一下错误
21/08/19 10:46:04 ERROR SparkContext: Error initializing SparkContext. org.apache.spark.SparkException: A master URL must be set in your configurationat org.apache.spark.SparkContext.<init>(SparkContext.scala:376)at org.apache.spark.SparkContext$.getOrCreate(SparkContext.scala:2516)at org.apache.spark.sql.SparkSession$Builder$$anonfun$6.apply(SparkSession.scala:918)at org.apache.spark.sql.SparkSession$Builder$$anonfun$6.apply(SparkSession.scala:910)at scala.Option.getOrElse(Option.scala:121)at org.apache.spark.sql.SparkSession$Builder.getOrCreate(SparkSession.scala:910)at org.apache.spark.examples.SparkPi$.main(SparkPi.scala:31)at org.apache.spark.examples.SparkPi.main(SparkPi.scala) 21/08/19 10:46:04 INFO SparkContext: Successfully stopped SparkContext Exception in thread "main" org.apache.spark.SparkException: A master URL must be set in your configurationat org.apache.spark.SparkContext.<init>(SparkContext.scala:376)at org.apache.spark.SparkContext$.getOrCreate(SparkContext.scala:2516)at org.apache.spark.sql.SparkSession$Builder$$anonfun$6.apply(SparkSession.scala:918)at org.apache.spark.sql.SparkSession$Builder$$anonfun$6.apply(SparkSession.scala:910)at scala.Option.getOrElse(Option.scala:121)at org.apache.spark.sql.SparkSession$Builder.getOrCreate(SparkSession.scala:910)at org.apache.spark.examples.SparkPi$.main(SparkPi.scala:31)at org.apache.spark.examples.SparkPi.main(SparkPi.scala)