Spark 之 Java+Maven 工程构建的一点坑

Class 不兼容

有如下的错误,

java.lang.RuntimeException: java.io.InvalidClassException: org.apache.spark.rpc.netty.RequestMessage; local class incompatible: stream classdesc serialVersionUID = -5447855329526097695, local class serialVersionUID = -2221986757032131007

明眼一看就是类在序列化和反序列化的类版本不一致导致的
因为一开始依赖的包是apache的包
但是使用的是CDH集群安装的Spark
所以客户端和服务端类不一致
修改客户端依赖jar包即可

   <dependencies>
        <dependency>
            <groupId>org.apache.sparkgroupId>
            <artifactId>spark-core_2.10artifactId>
            <version>1.6.0-cdh5.13.1version>
        dependency>
    dependencies>
  <repositories>
        <repository>
            <id>clouderaid>
            <url>https://repository.cloudera.com/artifactory/cloudera-repos/url>
        repository>
    repositories>

提交任务 ClassNotFoundException

首先打包工程,因为我用的是maven,所以使用package命令即可
打完包,设置spark-conf即可

SparkConf conf = new SparkConf()
                .setAppName("WordCountCluster");
        conf.setJars(new String[]{"E:\\code\\spark-poc\\quickstart\\target\\quick-start-1.0-SNAPSHOT.jar"});

提交任务运行不了

报错

18/07/27 20:03:52 WARN TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources

请查看Master 服务器是否有相应的资源
Spark 之 Java+Maven 工程构建的一点坑_第1张图片

设置这两个变量小于最大资源即可,注意分区不要搞太多

conf.set("spark.executor.cores", "1");
conf.set("spark.executor.memory", "200m");

你可能感兴趣的:(spark)