首页 文章

每个元素的pyspark字典

提问于
浏览
0

我是pyspark的新手,我有一个如下表所示的数据 . 我希望“品牌”中的每个元素都成为我的钥匙和“布料”才能成为我的 Value . 我怎么能在pyspark做到这一点?

cloths |Brand
-------------
shirt  |[x,y]
       |
pants  |[x,y,z,hi]

需要输出:

x:shirt

y:shirt

x:pants

y:pants

z:pants

hi:pants

谢谢你的帮助

1 回答

  • 0

    如果你想使用 rdd ,你只需要调用flatMap() . 这将允许您遍历 cloths 列表以创建所需的输出,并展平结果 .

    如果您希望每一行都是 (key, value) 的元组:

    rdd.flatMap(lambda row: [tuple([b, row['cloths']]) for b in row['Brand']]).collect()
    #[(u'x', u'shirt'),
    # (u'y', u'shirt'),
    # (u'x', u'pants'),
    # (u'y', u'pants'),
    # (u'z', u'pants'),
    # (u'hi', u'pants')]
    

    或者,如果您希望每一行都是字典:

    rdd.flatMap(lambda row: [{b: row['cloths']} for b in row['Brand']]).collect()
    #[{u'x': u'shirt'},
    # {u'y': u'shirt'},
    # {u'x': u'pants'},
    # {u'y': u'pants'},
    # {u'z': u'pants'},
    # {u'hi': u'pants'}]
    

相关问题