2015-10-21 40 views
3

我想在yarn-cluster模式下執行我的Spark作業。這是工作的罰款與獨立和紗線客戶機模式,但在集羣模式下,在pairs.saveAsTextFile(output);在簇羣模式下的Apache Spark正在拋出Hadoop FileAlreadyExistsException

這裏扔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); 

按照日誌,它爲一個節點,之後,它開始爲其餘所有節點拋出此異常。

有人可以幫我解決它嗎?謝謝。

+0

禁用輸出規範後,它正在工作:('spark.hadoop.validateOutputSpecs = true')。修復FileAlreadyExistsException後,作業在通道關閉時失敗,並且通過參數「fs.hdfs.impl.disable.cache = true」修復。 我發現了很多這些例外的已打開的錯誤。我從這些錯誤中發現了這些解決方法。我不知道這是正確的行爲,還是我錯過了什麼? – Ajeet

回答

1

禁用輸出規範後,它正在工作:(spark.hadoop.validateOutputSpecs = true)。

它看起來像Hadoop的一個功能,通知用戶指定的輸出目錄已經有一些數據,如果您將在下一次迭代此作業時使用相同的目錄,它將會丟失。

在我的應用程序提供作業一個額外的參數 - - 覆蓋,和我們使用這樣的:

spark.hadoop.validateOutputSpecs = value of overwrite flag

如果用戶要覆蓋現有的輸出比他能提供的價值「覆蓋「標誌是真實的。

相關問題