2017-09-13 82 views
0

我有一個5個節點的簇,部署了YARN。 2個Namenodes和3個Datanodes。雖然我的代碼是在spark中提交的。我試圖將數據導出到csv,但是當我這樣做時,數據會被導出到2個datanodes,並且兩個導出文件夾中都會有不同的內容。一個會有_SUCCESS文件,另一個會有導出的csv(part- *)。我的應用程序結束了一個空白路徑,因爲有時具有_SUCCESS文件的節點和運行應用程序的節點是相同的,但實際的csv在另一個節點中。另外,有時候_SUCCESS文件不會被創建,但部分 - *。csv被創建,但是在另一個節點中,在這種情況下,如果應用程序沒有再次在同一個節點上運行,我會再次使用空白路徑。我正在使用通過以下方式:紗線簇上的spark scala csv export

dataframe.coalesce(1).write.option( 「頭」, 「真」)CSV(路徑)

+0

你的路徑的價值是什麼? – bigdatamann

+0

file:/// <在linux系統中的絕對路徑> – sanju4evr

回答

0

,而不是文件:/// 你爲什麼不給一個hdfs/s3位置?

當你給一個本地路徑時,數據存儲在工作節點上!您可能擁有2個節點而不是3個數據,因爲有2個分區。

+0

我試圖導出的數據是在cassandra中,並且在處理它之後,我試圖導出。導出需要在Linux文件系統中完成,因爲UI需要訪問文件。 – sanju4evr

+0

你通常會收到多少部分文件? – bigdatamann

+0

我只有一個part- *文件,因爲我使用了coalesce。但問題是它在應用程序未運行的節點上創建。因此,如果datanode3正在運行該應用程序,則會在datanode1和datanode3上創建導出文件夾。 datenode1包含部分 - *。csv文件,datanode3包含_SUCCESS。兩個節點中的絕對路徑相同。由於應用程序正在datanode3中運行,因此它會返回節點的本地主機和文件位置,但該位置不包含該文件,datanode1會執行此操作。 – sanju4evr

相關問題