pyspark RDD将行扩展为多行

时间:2017-05-06 18:42:31

标签: python apache-spark pyspark rdd

我在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) ]

基本上将句子键扩展为多行,单词为键。

我想避免使用SQL。

1 个答案:

答案 0 :(得分:5)

使用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)]