2017-07-30 127 views
1

我有一個JavaPairRDD可以說型保存的RDD對在特定的格式輸出文件

<Integer,List<Integer>> 

的數據時,我做data.saveAsTextFile(「輸出」) 輸出將包含在所述數據格式如下:

(1,[1,2,3,4])

等等

我想在輸出文件中是這樣的:

1 1,2,3,4

i.e. 1\t1,2,3,4 

任何幫助,將不勝感激

回答

2

您需要了解這裏發生了什麼。您有一個RDD[T,U],其中T和U是某些obj類型,將其作爲T和U的元組的RDD讀取。在您調用saveAsTextFile()時,在此RDD中,它基本上將RDD的每個元素轉換爲字符串,因此文本文件生成爲輸出。

現在,一些類型T的對象如何轉換爲字符串?通過調用它的toString()。這就是爲什麼你有[]代表List和()代表整個Tuple的原因。

解決方案,根據您的格式將RDD中的每個元素映射到一個字符串。我不是那熟悉Java的語法,但Scala的,我會做這樣的事情,

rdd.map(e=>s"${e._1}\t${e._2.mkString(",")}") 

凡mkString串接使用一些分隔符的集合。

讓我知道這是否有幫助。乾杯。

+0

謝謝,我會這樣做 – ashwinbhy