首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将Array[Row]转换为RDD[Row]

如何将Array[Row]转换为RDD[Row]
EN

Stack Overflow用户
提问于 2017-06-17 17:55:49
回答 1查看 2.2K关注 0票数 2

我有一个场景,在这个场景中,我希望将数据格式ArrayRow的结果转换为RDDRow。我尝试过使用并行化,但我不想使用它,因为它需要在一个系统中包含整个数据,这在生产盒中是不可行的。

代码语言:javascript
复制
val Bid = spark.sql("select Distinct DeviceId, ButtonName  from stb").collect()
val bidrdd = sparkContext.parallelize(Bid)

我怎样才能做到这一点?我尝试了这个链接(How to convert DataFrame to RDD in Scala?)中给出的方法,但是它对我不起作用。

代码语言:javascript
复制
val bidrdd1 = Bid.map(x => (x(0).toString, x(1).toString)).rdd

它给出了一个错误value rdd is not a member of Array[(String, String)]

EN

回答 1

Stack Overflow用户

发布于 2017-06-17 18:03:09

您在这里创建的变量Bid而不是a DataFrame,它是Array[Row],这就是为什么不能在其上使用.rdd的原因。如果您想获得一个RDD[Row],只需在DataFrame上调用.rdd (而不调用collect):

代码语言:javascript
复制
val rdd = spark.sql("select Distinct DeviceId, ButtonName  from stb").rdd

你的帖子包含了一些值得注意的误解:

..。ArrayRow格式的数据文件.

不完全是-- Array[Row]是将数据从DataFrame收集到驱动程序内存中的结果--它不是DataFrame。

..。我不想用它,因为它需要在一个系统中包含整个数据.

注意,一旦在collect上使用了DataFrame,就已经将整个数据收集到了单个JVM的内存中。因此,使用parallelize不是问题所在。

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

https://stackoverflow.com/questions/44607680

复制
相关文章

相似问题

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