【问题标题】:pyspark RDD expand a row to multiple rowspyspark RDD 将一行扩展为多行
【发布时间】: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。

【问题讨论】:

    标签: python apache-spark pyspark rdd


    【解决方案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)]
    

    【讨论】:

    • 太棒了!简短、简单、易懂!
    猜你喜欢
    • 2018-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多