spark阅读调试环境搭建
我是参考这边博客搭建spark环境,同时整理了一些遇到的问题
准备环境
-
从github上下载spark相关版本的代码
- 可以通过git来下载,也可以选择相应的版本打包下载到本地,然后解压
-
安装scala(这里选择的版本,需要根据下载的spark源码版本中依赖的scala大版本)
-
安装jdk(jdk1.8以上,这个可以根据下载的spark源码中依赖的jdk版本,不过jdk1.8以上目前基本上不会有问题)
-
安装maven
-
修改maven仓库,使用aliyun的镜像仓库(默认使用的是maven中央仓库网络原因,在后面编译下载pom依赖时可能会比较慢,所以这里换成国内aliyun的镜像仓库)
<mirror> <id>nexus-aliyun</id> <mirrorOf>central</mirrorOf> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror>
在setting文件中的mirrors中添加上面的代码块 -
-
安装IDE,并安装对应的scala的插件,这部分网上有很多资料,我使用的是idea,可以参考idea搭建spark开发环境
- 安装idea的社区版或专业版(社区版就满足需求)
- 安装idea的scala插件(这块可以在idea中安装,也可以先到idea官网,下载idea对应的scala插件版本,然后选择从磁盘安装)
-
从github上下载spark相关版本的代码
- 可以通过git来下载,也可以选择相应的版本打包下载到本地,然后解压
spark代码导入IDE中
- 为了后面编译代码方便,先修改项目根目录下的pom.xml文件中的一些依赖
- 将依赖的maven版本修改为本地安装的maven版本
- 将依赖的jdk版本修改为本地安装的jdk版本
- 因为有些文件需要先编译才能生成,所以,调试前,代码是需要编译一次的
-
方法1:先maven编译一边,然后作为普通的maven项目导入到idea中
mvn -T 4 -DskipTests clean package 注:-T为编译时启动的线程数 -DskipTests 跳过测试 -
方法2:直接作为maven项目导入idea,然后点击idea中右侧maven栏中的“Generate Sources and Update Folders For All Projects”
Generate Sources and Update Folders For All Projects的作用相当于方法一中的mvn package- 之后等待包导入
-
本地IDE运行spark自带样例
- 在idea中新添加一个application,并选择example中的样例,可以运行JavaLogQuery或JavaWordCount测试
- 这部分链接中的博客也有说明
- 运行配置中需要在
VM options中添加下面的参数-Dspark.master=local
可能遇到的问题及解决思路
运行程序时,可能遇到两种错误
-
类似:
not found: type SparkFlumeProtocol...
原因:代码中缺少依赖的类或方法
解决:idea中,右击maven,选择指定模块,然后右击并选择Generate Sources and Update Folders,
如上则选择“Spark Project External Flume Sink”模块,然后执行"Generate...."
效果相同的操作为cd external\flume-sink-->mvn -DskipTests clean package -
类似:
java.lang.ClassNotFoundException: org.spark_project.guava.cache.CacheLoader
原因:执行时缺少依赖jar包,这个问题主要会出现在用idea执行代码时候
因为pom中依赖的包多为provided,打包时并不会将这些依赖的包打进去,所以执行时会NotFound
解决:在要执行的模块的dependencies中添加缺少的jar包,
如果是spark模块的的包,则通过添加模块target中的jar,
如果是dependencies中已有的jar,则将scope的“provided”改为“compile”
注意:执行时可能会有很多ClassNotFound,需要依次将provided改为compile
参考博客:
https://www.cnblogs.com/listenfwind/p/11421206.html
https://cloud.tencent.com/developer/article/1010919

浙公网安备 33010602011771号