scala使用maven构建spark项目

一、构建spark项目

maven构建scala项目

1.参考之前构建scala项目的步骤,先构建一个scala项目。

2.然后再加入spark版本的依赖。

  <dependency>

     <groupId>org.apache.spark</groupId>

     <artifactId>spark-core_2.10</artifactId>

     <version>1.5.0</version>

 </dependency>

注意spark版本要和集群上spark版本对应。spark-core_2.10不能写成spark-core_2.11,后面的2.10是和你的scala版本对应上的。如果spark的版本是从scala2.11编译的,则要写2.11。

3.把jdk和scala版本改成spark依赖的版本

<properties>

    <maven.compiler.source>1.7</maven.compiler.source>

    <maven.compiler.target>1.7</maven.compiler.target>

    <encoding>UTF-8</encoding>

    <scala.version>2.10.4</scala.version>

    <scala.compat.version>2.10</scala.compat.version>

  </properties>

注意scala.version和scala.compat.version版本要改成相同的,否则maven编译会报错,编译不过去。

二、问题汇总

1.java.util.concurrent.RejectedExecutionException: Task java.util.concurrent.FutureTask@d919109 rejected from java.util.concurrent.ThreadPoolExecutor@7b42ce0a

将sparkConf.setMaster里面master ip改成hostName,这样就不会出现这个错误了,如下:

sparkConf..setMaster("spark://bigdata1:7077,bigdata2:7077");

参考: java远程调用 spark服务出错

2.java.lang.NoClassDefFoundError: scala/collection/GenTraversableOnce$class

scala ide编译spark程序使用的scala版本和spark集群上的scala版本不一致。解决方法就是更改scala ide所使用的scala 版本

首先新增符合要求的scala版本,如下:

scala使用maven构建spark项目_第1张图片

然后项目右键,选择scala compiler,选择刚刚新增的scala版本

参考:运行第一个SparkStreaming程序(及过程中问题解决)

3.java.lang.ClassNotFoundException: com.bigdata.test22.SparkTest$$anonfun$1

出现这个错误是spark standalone集群中,我们运行的类在worker节点没有,所以worker节点就会报找不到类这个错误,需要将我们的spark程序打包放到集群的每个节点上,然后在sparkConf加上如下代码:

sparkConf.addJar("/home/hadoop/Desktop/sparkTest.jar"); 

spark java api通过run as java application运行的方法





 

你可能感兴趣的:(scala使用maven构建spark项目)