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
任何幫助,將不勝感激
我有一個JavaPairRDD可以說型保存的RDD對在特定的格式輸出文件
<Integer,List<Integer>>
的數據時,我做data.saveAsTextFile(「輸出」) 輸出將包含在所述數據格式如下:
(1,[1,2,3,4])
等等
我想在輸出文件中是這樣的:
1 1,2,3,4
i.e. 1\t1,2,3,4
任何幫助,將不勝感激
您需要了解這裏發生了什麼。您有一個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串接使用一些分隔符的集合。
讓我知道這是否有幫助。乾杯。
謝謝,我會這樣做 – ashwinbhy