2016-10-14 56 views
0

我有一個簡單的spark工作,它從s3中讀取一個文件,需要5個時間並在s3中寫回。 我看到的是,在s3中總是有附加文件,在我的輸出「目錄」旁邊,它被稱爲output_ $ folder $。S3上帶有美元符號的Junk Spark輸出文件

這是什麼?我如何防止火花產生? 下面是一些代碼來顯示我在做什麼...

x = spark.sparkContext.textFile("s3n://.../0000_part_00") 
five = x.take(5) 
five = spark.sparkContext.parallelize(five) 
five.repartition(1).saveAsTextFile("s3n://prod.casumo.stu/dimensions/output/") 

這份工作,我已經S3「目錄」稱爲輸出其中包含的結果和另一S3對象調用output_ $文件夾$,我不知道以後這是什麼。

回答

1

好吧,看來我發現它是什麼。 它是某種標記文件,可能用於確定S3目錄對象是否存在。 我如何得出這個結論? 首先,我發現這個鏈接,顯示

org.apache.hadoop.fs.s3native.NativeS3FileSystem#mkdir 

方法的來源:http://apache-spark-user-list.1001560.n3.nabble.com/S3-Extra-folder-files-for-every-directory-node-td15078.html

然後我GOOGLE了其他的源代碼倉庫,看我要找到不同版本的方法。我沒有。

最後,我做了一個實驗,並在我刪除了s3輸出目錄對象但留下了output_ $文件夾$文件後重新運行相同的spark工作。作業失敗,說輸出目錄已經存在。

我的結論是,這是hadoop的方法,以知道是否有一個名稱爲s3的目錄,我將不得不忍受。

當我從本地開發機器(即筆記本電腦)運行作業時,上述情況都會發生。如果我從aws數據管道運行相同的作業,output_ $文件夾$不會被創建。