pyspark RDD 将一行扩展为多行
Posted
技术标签:
【中文标题】pyspark RDD 将一行扩展为多行【英文标题】:pyspark RDD expand a row to multiple rows 【发布时间】:2017-05-06 18:42:31 【问题描述】:我在 pyspark 中有以下 RDD,我相信这应该很简单,但一直无法弄清楚:
information = [ (10, 'sentence number one'),
(17, 'longer sentence number two') ]
rdd = sc.parallelize(information)
我需要应用一个转换,将 RDD 变成这样:
[ ('sentence', 10),
('number', 10),
('one', 10),
('longer', 17),
('sentence', 17),
('number', 17),
('two', 17) ]
基本上把一个句子的key扩展成多行,以单词为key。
我想避免使用 SQL。
【问题讨论】:
【参考方案1】:使用flatMap
:
rdd.flatMap(lambda x: [(w, x[0]) for w in x[1].split()])
示例:
rdd.flatMap(lambda x: [(w, x[0]) for w in x[1].split()]).collect()
# [('sentence', 10), ('number', 10), ('one', 10), ('longer', 17), ('sentence', 17), ('number', 17), ('two', 17)]
【讨论】:
太棒了!简短、简单、易懂!以上是关于pyspark RDD 将一行扩展为多行的主要内容,如果未能解决你的问题,请参考以下文章
我可以将 Pyspark RDD 用作 Pandas DataFrame 吗? Pyspark/spark 在数据分析中对 Pandas 的限制?