我是参考这边博客搭建spark环境,同时整理了一些遇到的问题
修改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中添加上面的代码块
方法1:先maven编译一边,然后作为普通的maven项目导入到idea中
mvn -T 4 -DskipTests clean package
注:-T为编译时启动的线程数
-DskipTests 跳过测试
Generate Sources and Update Folders For All Projects
的作用相当于方法一中的 mvn package
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
原文:https://www.cnblogs.com/pearsonlee/p/12087928.html