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

标签 scala hadoop apache-spark

我正在使用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 /”)读回此压缩数据

enter image description here

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

关于scala - Spark:如何将rdd.RDD [String]转换为rdd.RDD [(Array [Byte],Array [Byte])],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40255434/

相关文章:

json - 使用 scala play 将 Json 对象添加到 JSON 数组

regex - Scala列表匹配正则表达式

scala - Spark 2.0缺少Spark隐式

java - Hadoop 文本是可变的

scala - Circe 解码为由多个案例类扩展的密封特征

java - hadoop、 Jersey 和 JBoss : application won't start

hadoop - HbaseTestingUtility : could not start my mini-cluster

apache-spark - 从 json 模式表示创建 spark 数据帧模式

python - 在 Spark 中获取上周一

apache-spark - Apache 星火 : Using folder structures to reduce run-time of analyses