Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spark作业与Google Dataproc不兼容_Java_Apache Spark_Google Cloud Dataproc - Fatal编程技术网

Java Spark作业与Google Dataproc不兼容

Java Spark作业与Google Dataproc不兼容,java,apache-spark,google-cloud-dataproc,Java,Apache Spark,Google Cloud Dataproc,我有这段代码,它已经运行了好几个月了,并且在大约2个月前停止使用GoogleDataProc,尽管我没有更改任何一行代码 我只需要几行代码就可以重现这个bug,因此我不必发布大量代码: SparkConf sparkConf = new SparkConf().setAppName("test"); JavaSparkContext jsc = new JavaSparkContext(sparkConf); JavaRDD<String> rdd = jsc.paralleliz

我有这段代码,它已经运行了好几个月了,并且在大约2个月前停止使用GoogleDataProc,尽管我没有更改任何一行代码

我只需要几行代码就可以重现这个bug,因此我不必发布大量代码:

SparkConf sparkConf = new SparkConf().setAppName("test");
JavaSparkContext jsc = new JavaSparkContext(sparkConf);

JavaRDD<String> rdd = jsc.parallelize(Arrays.asList("a", "b", "c"));
JavaPairRDD<String, String> pairs = rdd.flatMapToPair(value ->
        Arrays.asList(
                new Tuple2<>(value, value + "1"), 
                new Tuple2<>(value, value + "2")
        )
);
pairs.collect().forEach(System.out::println);
如果我在本地运行它,请使用:

sparkConf.setMaster("local[2]")
然后它工作正常并输出:

(a,a1)
(a,a2)
(b,b1)
(b,b2)
(c,c1)
(c,c2)
以下是我的Spark相关性:

    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_2.10</artifactId>
        <version>1.6.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-mllib_2.10</artifactId>
        <version>1.6.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-streaming_2.10</artifactId>
        <version>1.6.0</version>
    </dependency>

org.apache.spark
spark-core_2.10
1.6.0
org.apache.spark
spark-mllib_2.10
1.6.0
org.apache.spark
spark-2.10
1.6.0

非常感谢您的帮助。

Dataproc使用的默认映像最近升级到Spark 2.0/Scala 2.11。这一点在8月份有所改变,可能可以解释这种差异

详细说明每个Dataproc映像版本中包含的软件包版本

使用以下内容更新pom.xml,重新编译并重新运行应用程序就足够了

<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-core_2.11</artifactId>
    <version>2.0.0</version>
</dependency>
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-mllib_2.11</artifactId>
    <version>2.0.0</version>
</dependency>
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-streaming_2.11</artifactId>
    <version>2.0.0</version>
</dependency>

当使用显式图像跟踪时,请记住,主/次版本可能会被弃用并最终删除。有关映像版本的支持时间表,请参考该策略。

Dataproc使用的默认映像最近已升级到Spark 2.0/Scala 2.11。这一点在8月份有所改变,可能可以解释这种差异

详细说明每个Dataproc映像版本中包含的软件包版本

使用以下内容更新pom.xml,重新编译并重新运行应用程序就足够了

<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-core_2.11</artifactId>
    <version>2.0.0</version>
</dependency>
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-mllib_2.11</artifactId>
    <version>2.0.0</version>
</dependency>
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-streaming_2.11</artifactId>
    <version>2.0.0</version>
</dependency>

当使用显式图像跟踪时,请记住,主/次版本可能会被弃用并最终删除。有关图像版本的支持时间表,请参考该政策。

谢谢,安格斯,它工作得很好。将版本更改为2.11需要更改代码,因此在此期间,我必须使用
——图像版本1.0
。对于其他有相同问题的人,我建议将--image版本设置为当前版本,以避免在将来的Dataproc升级中出现向后兼容性问题。我还添加了一个指向图像版本控制支持策略的链接,只是想指出图像版本不是无限期支持的。谢谢,Angus,它工作得很好。将版本更改为2.11需要更改代码,因此在此期间,我必须使用
——图像版本1.0
。对于其他有相同问题的人,我建议将--image版本设置为当前版本,以避免在将来的Dataproc升级中出现向后兼容性问题。我还添加了一个指向映像版本控制支持策略的链接,只是为了指出映像版本不是无限期支持的。
$ gcloud dataproc clusters create --image-version 1.0 ...