在纱线群集模式下的Apache Spark正在抛出Hadoop FileAlreadyExistsException

时间:2015-10-21 10:28:42

标签: java apache-spark yarn

我正在尝试以纱线群集模式执行我的Spark作业。它在独立和纱线客户端模式下工作正常,但在群集模式下,FileAlreadyExistsException处于pairs.saveAsTextFile(output);

这是我的工作实施:

SparkConf sparkConf = new SparkConf().setAppName("LIM Spark PolygonFilter").setMaster(master);  
        JavaSparkContext javaSparkContext = new JavaSparkContext(sparkConf);            
        Broadcast<IGeometry> boundryBroadCaster = broadcastBoundry(javaSparkContext, boundaryPath);         
        JavaRDD<String> file = javaSparkContext.textFile(input);//.cache();     
        JavaRDD<String> pairs = file.filter(new FilterFunction(params , boundryBroadCaster));
        pairs.saveAsTextFile(output);

根据日志,它适用于一个节点,之后它开始为所有节点的其余节点抛出此异常。

有人可以帮我修理一下吗?感谢。

1 个答案:

答案 0 :(得分:1)

禁用输出规范后,它正在工作:(spark.hadoop.validateOutputSpecs = true)。

看起来Hadoop的一个功能是通知用户指定的输出目录已经有一些数据,如果您将使用相同的目录进行此作业的下一次迭代,它将会丢失。

在我的应用程序中,我为job提供了一个额外的参数 - -overwrite,我们正在使用它:

spark.hadoop.validateOutputSpecs = value of overwrite flag

如果用户想要覆盖现有输出,则可以将“overwrite”标志的值设置为true。