yarn-cluster 模式下的 Apache Spark 抛出 Hadoop FileAlreadyExistsException
Apache Spark in yarn-cluster mode is throwing Hadoop FileAlreadyExistsException
我正在尝试在 yarn-cluster 模式下执行我的 Spark 作业。它在独立和 yarn-client 模式下工作正常,但在集群模式下它在 pairs.saveAsTextFile(output);
处抛出 FileAlreadyExistsException
这是我的作业实现:
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);
根据日志,它适用于一个节点,然后它开始为所有节点的其余部分抛出此异常。
谁能帮我解决一下...?谢谢
禁用输出规范后它正在工作:(spark.hadoop.validateOutputSpecs=true)。
这看起来像是 Hadoop 的一个功能,可以通知用户指定的输出目录已经有一些数据,如果您将在此作业的下一次迭代中使用相同的目录,这些数据将会丢失。
在我的应用程序中,我为作业提供了一个额外的参数 - -overwrite,我们这样使用它:
spark.hadoop.validateOutputSpecs = value of overwrite flag
如果用户想要覆盖现有的输出,他可以提供 "overwrite" 标志的值为 true。
我正在尝试在 yarn-cluster 模式下执行我的 Spark 作业。它在独立和 yarn-client 模式下工作正常,但在集群模式下它在 pairs.saveAsTextFile(output);
FileAlreadyExistsException
这是我的作业实现:
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);
根据日志,它适用于一个节点,然后它开始为所有节点的其余部分抛出此异常。
谁能帮我解决一下...?谢谢
禁用输出规范后它正在工作:(spark.hadoop.validateOutputSpecs=true)。
这看起来像是 Hadoop 的一个功能,可以通知用户指定的输出目录已经有一些数据,如果您将在此作业的下一次迭代中使用相同的目录,这些数据将会丢失。
在我的应用程序中,我为作业提供了一个额外的参数 - -overwrite,我们这样使用它:
spark.hadoop.validateOutputSpecs = value of overwrite flag
如果用户想要覆盖现有的输出,他可以提供 "overwrite" 标志的值为 true。