将 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