将 rdd 转换为 DF 列

Posted

技术标签:

【中文标题】将 rdd 转换为 DF 列【英文标题】:converting an rdd out of DF column 【发布时间】:2017-09-10 06:27:22 【问题描述】:

我从一个 DF 列制作了一个 RDD

##converting a column into an rdd
rdd = eDF_review_split.select('splReview').rdd.map(list)
##print rdd.take(10)

我得到的结果如下

[[u'Installing'], [u'the'], [u'game'], [u'was'], [u'a'], [u'struggle'], [u'(because'], [u'of'], [u'games'], [u'for']]

这是有道理的,因为这些词来自不同的行。

如何将其制成如下格式?

[u'Installing', u'the', u'game', u'was', u'a', u'struggle', u'(because', u'of', u'games', u'for']

我需要这样做,以便进行正确的字数统计。

【问题讨论】:

eDF_review_split 的架构是什么?你能提供一个样本数据吗? 为什么为了简单的字数统计而扁平化您的列表?您可以并行执行减少 【参考方案1】:

flatMap:

flatMap(f, preservesPartitioning=False)

首先将一个函数应用于此 RDD 的所有元素,然后将结果展平,从而返回一个新的 RDD。

identity function:

df_review_split.select('splReview').rdd.flatMap(lambda x: x)

我需要这样做,以便进行正确的字数统计。

 eDF_review_split.groupBy('splReview').count()

【讨论】:

【参考方案2】:

遍历列表列表,对于主列表中的每个列表,将值附加到另一个列表。

一个班轮:

list_main_separated = [item for insideList in rdd for item in insideList]

这意味着:

list_main_separated = []

for insideList in rdd:
    for item in insideList :
        list_main_separated .append(item )

【讨论】:

是的,我认为这应该可行,但因为我的 rdd 很大,它跳过了任务 PS。 bcuz 我得到 'PipelinedRDD' 对象不可迭代我正在添加 rdd.toLocalIterator()

以上是关于将 rdd 转换为 DF 列的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 customSchema 将 RDD 转换为 DF

Spark 2.0:如何将元组的 RDD 转换为 DF [重复]

PySpark:将 RDD 转换为数据框中的列

将 Dataframe 转换为 RDD 减少了分区

转换列并更新 DataFrame

如何在 Scala 中将 RDD 转换为二维数组?