我正在尝试以纱线群集模式执行我的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);
根据日志,它适用于一个节点,之后它开始为所有节点的其余节点抛出此异常。
有人可以帮我修理一下吗?感谢。
答案 0 :(得分:1)
禁用输出规范后,它正在工作:(spark.hadoop.validateOutputSpecs = true)。
看起来Hadoop的一个功能是通知用户指定的输出目录已经有一些数据,如果您将使用相同的目录进行此作业的下一次迭代,它将会丢失。
在我的应用程序中,我为job提供了一个额外的参数 - -overwrite,我们正在使用它:
spark.hadoop.validateOutputSpecs = value of overwrite flag
如果用户想要覆盖现有输出,则可以将“overwrite”标志的值设置为true。