2016-06-08 86 views
0

我正在使用Spark java API將不同類型的文件(文本,xml,csv等)解析爲特定的文本文件格式。該輸出文件保持文件頭,開始標籤,數據頭,數據和結束標籤的順序。所有這些元素都是在輸入文件中提取的。 我試着以下2種方式實現這一點:使用火花TEXTFILESpark轉換和排序

  1. 讀文件到RDD和使用地圖mapPartions返回新RDD進行解析。
  2. 使用Read文件火花TEXTFILE,減少使用聚結 1個分區,並通過使用mapPartions返回新RDD進行解析。

雖然我不關心實際數據的排序問題,但使用第一種方法時,我無法保留文件標題,開始標記,數據標題和結束標記的所需順序。 後者適用於我,但我知道這是不是有效的方式,並可能導致BIG文件的情況下的問題。

是否有任何有效的方法來實現這一目標?

回答

0

你在假設中是正確的。第二種選擇簡單地取消了應用程序的分佈式方面,所以它不可伸縮。對於訂單問題,由於概念是異步的,當數據駐留在不同的節點中時,我們無法跟蹤訂單。你可以做的是一些預處理,可以取消訂單。意思是合併直到行順序無關緊要的行,然後才分發文件。除非你能夠對文件結構做出假設,比如屬於同一行的行數,否則我會選擇上述內容。