Git bash
进入Spark根目录
mvn -DskipTests clean package
打开IDEA,导入Spark源码
1. IDEA导入Spark源码
导入源码之后,在编译之前需要做一些工作:
-
设定JDK
File-》Project Structure -》SDKs, 选择jdk1.8 -
设定scala
File-》Setting -》Plugins,输入scala ,单击install即可。
-
pom.xml
将不关注的module进行注释掉
provided改成
<scope>compile</scope>
- Build project
2. 运行demo
进入example目录,执行sparkPi.scala,.
如果执行以下错误: Error while locating file spark-version-info.properties.
解决办法如下:
File -> Project Structure -> Modules -> spark-examples_2.11 -> Dependencies 添加依赖 jars -> {spark dir}/spark/assembly/target/scala-2.11/jars/
3. 扩展
1)通常运行应用时,报下列错误:
java.lang.NoClassDefFoundError: org/apache/spark/sql/hive/HiveContext
这是因为spark源码没有下载对hive组件的支持,如果需要spark 支持hive的应用,编译的时候需要添加以下命令:
mvn -Pyarn -Phadoop-2.7 -Dhadoop.version=2.7.5 -Phive -Phive-thriftserver -DskipTests
需要对其重新编译。如果是集群模式,成功编译后的spark源码发送到其他节点上。
scp -r -q ./spark-2.2.3-src slave1:~/spark-2.2.3-src & scp -r -q ./spark-2.2.3-src slave2:~/spark-2.2.3-src & scp -r -q ./spark-2.2.3-src slave3:~/apps/spark-2.2.3-src
接着重新运行应用即可。
- 设置spark cache操作的内存占比,除了配置文件中设置,IDEA中可以通过set方法来操作,具体如下:
SparkConf SparkConf = new SparkConf() .set(“Spark.storage.memoryFraction”, “0.7”) // 默认是0.6(60%)
3)运行spark example报错如下:
Caused by: java.lang.ClassNotFoundException: scala.collection.Seq
解决办法如下:
详细修改如下:
参考:
【1】https://blog.csdn.net/ggz631047367/article/details/53811213