spark:如何将rdd.rdd[string]转换为rdd.rdd[(array[byte],array[byte])]

jgovgodb  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(612)

我正在用spark读取一个压缩文件

val data =  sc.textFile(inputFile)

这给了我一个 RDD[string] . 如何将此转换为 RDD[(Array[Byte], Array[Byte])] 在斯卡拉?
有关此要求的更多详细信息:
我正在spark上使用terasort。默认情况下,terasort不写入压缩输出hdf。为了解决这个问题,在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])] 格式。
谢谢

qhhrdooz

qhhrdooz1#

您可以通过将compression codec参数传递到saveastextfile来写入压缩的数据,如下所示:

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

您可以使用sc.textfile(“/tmp/test/”)读回压缩数据

现在,要回答您真正的问题,正如zohar所说,您可以使用.map将字符串转换为数组[byte],但是您还没有给出足够的信息。

相关问题