2016-10-26 81 views
0

我使用星火:如何rdd.RDD [字符串]轉換爲rdd.RDD [(數組[字節]數組[字節])

val data = sc.textFile(inputFile) 

讀火花的壓縮文件這給了我數據爲RDD[string]。 如何將其轉換爲RDD[(Array[Byte], Array[Byte])] in scala?

更多有關此要求的詳細信息:

我使用terasort上的火花。默認情況下,terasort不會寫入壓縮輸出HDFS。 要解決這一問題添加以下代碼TeraSort.scala文件

sorted.saveAsHadoopFile(outputFile,classOf[Text],classOf[IntWritable], 
classOf[TextOutputFormat[Text,IntWritable]], 
classOf[org.apache.hadoop.io.compress.SnappyCodec]) 

這給了我壓縮輸出文件

現在我需要閱讀該文件運行TeraValidate。 Teravalidate需要RDD[(Array[Byte], Array[Byte])]格式的輸入。

感謝

+5

使用'data.map(..)'函數將字符串解析爲數組的元組。沒有足夠的信息供任何人提供任何見解如何編寫此函數... –

+0

輸入文本如何看起來像? – mrsrinivas

回答

0

你可以寫通過將壓縮編解碼器參數的saveAsTextFile壓縮的數據如下:

import org.apache.hadoop.io.compress.GzipCodec 
sorted.saveAsTextFile("/tmp/test/", classOf[GzipCodec]) 

可以回用sc.textFile閱讀本壓縮數據(「/ tmp目錄/測試/「)

enter image description here

現在,爲了回答你的真正問題,如瑣說,你可以使用.MAP來TRANSFO rm你的String到Array [Byte],但是你沒有提供足夠的信息。

+0

感謝您的回覆。我實際上正在使用Spark和Terasort基準測試應用程序。 https://github.com/ehiggs/spark-terasort/tree/master/src/main/scala/com/github/ehiggs/spark/terasort。我正在嘗試更改TeraSort.scala和TeraValidate.scala文件以寫入壓縮輸出,然後讀取壓縮文件 – stev

相關問題