首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spark:如何将rdd.RDD[String]转换为rdd.RDD[(Array[Byte],Array[Byte])]

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

Stack Overflow用户
提问于 2016-10-26 14:45:26
回答 1查看 730关注 0票数 0

我正在使用spark读取压缩文件

代码语言:javascript
复制
val data =  sc.textFile(inputFile)

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

有关此要求的更多详细信息:

我在spark上使用terasort。默认情况下,terasort不写入压缩输出HDFS。要解决此问题,请将以下代码添加到TeraSort.scala文件

代码语言:javascript
复制
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])]格式的输入。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2016-10-26 17:23:55

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

代码语言:javascript
复制
import org.apache.hadoop.io.compress.GzipCodec
sorted.saveAsTextFile("/tmp/test/", classOf[GzipCodec])

您可以使用sc.textFile("/tmp/test/")读回压缩后的数据。

现在,为了回答您的实际问题,正如Zohar所说,您可以使用.map将字符串转换为ArrayByte,但是您在这方面提供的信息还不够多。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40255434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档