我正在使用Spark阅读压缩文件
val data = sc.textFile(inputFile)
这给了我作为
RDD[string]
的数据。如何在Scala中将其转换为
RDD[(Array[Byte], Array[Byte])]
?有关此要求的更多详细信息:
我在 Spark 上使用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])]
格式输入。谢谢
最佳答案
您可以通过将压缩编码解码器参数传递给saveAsTextFile来写入压缩数据,如下所示:
import org.apache.hadoop.io.compress.GzipCodec
sorted.saveAsTextFile("/tmp/test/", classOf[GzipCodec])
您可以使用sc.textFile(“/ tmp / test /”)读回此压缩数据
现在,正如Zohar所说,要回答您的真实问题,您可以使用.map将您的String转换为Array [Byte],但是您没有提供足够的信息。
关于scala - Spark:如何将rdd.RDD [String]转换为rdd.RDD [(Array [Byte],Array [Byte])],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40255434/