首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用scala从星火中的RDD中获取值

如何使用scala从星火中的RDD中获取值
EN

Stack Overflow用户
提问于 2015-12-08 07:18:28
回答 2查看 4.6K关注 0票数 2

我想阅读存储在特定位置的the文件的内容。因此,我使用了SparkContext.readFile方法,如下所示:

代码语言:javascript
复制
val zipFileRDD = sc.binaryFiles("./handsOn/repo~apache~storm~14135470~false~Java~master~2210.zip")

zipFileRDD: org.apache.spark.rdd.RDD[(String, org.apache.spark.input.PortableDataStream)] = ./handsOn/repo~apache~storm~14135470~false~Java~master~2210.zip BinaryFileRDD[4] at binaryFiles at <console>:21

我的问题是:

如何从这个RDD. PortableDataStream .中获取实例

EN

回答 2

Stack Overflow用户

发布于 2015-12-08 07:58:57

您可以使用 actionzipFileRDD.collect返回一个Array[(String, PortableDataStream)]。但这通常不是你真正想要的!如果使用这些实例读取文件,那么实际上并不是在使用Spark的功能:驱动程序中会发生任何事情。相反,应用map和其他转换,以便在不同的工作人员上读取不同的文件。

票数 2
EN

Stack Overflow用户

发布于 2015-12-08 09:14:04

如果您只想在RDD之外运行PortableDataStream,那么只需运行:

代码语言:javascript
复制
val zipFilePds = zipFileRDD.map(x => x._2).collect()

使用库,您可以执行类似的操作来获取zip文件的内容(在本例中是文件清单):

代码语言:javascript
复制
import org.apache.commons.compress.archivers.zip

val zipFileListing = zipFileRDD.map(x => x._2.open()).map(x => { val y = new ZipArchiveInputStream(x) ; y.getNextEntry().getName() }).collect()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34150111

复制
相关文章

相似问题

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