Spark:如何将rdd.RDD [String]转换为rdd.RDD [(Array [Byte],Array [Byte])]

时间:2016-10-26 06:45:26

标签: scala hadoop apache-spark

我正在使用

在spark中读取压缩文件
val data =  sc.textFile(inputFile)

这为我提供了数据RDD[string]。 如何将其转换为scala中的RDD[(Array[Byte], Array[Byte])]

有关此要求的更多详情:

我在火花上使用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])]格式输入。

由于

1 个答案:

答案 0 :(得分:0)

您可以通过将压缩编解码器参数传递给saveAsTextFile来编写压缩数据,如下所示:

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

您可以使用sc.textFile(“/ tmp / test /”)

读取此压缩数据

enter image description here

现在,回答你的真实问题,正如Zohar所说,你可以使用.map将你的String转换为数组[Byte],但你没有提供足够的信息。