每个元素的pyspark字典

时间:2018-03-28 02:29:14

标签: pyspark

我是pyspark的新手 我有一个如下表所示的数据。我想要品牌中的每一个元素都是'成为我的钥匙和布料'是我的价值。我怎么能在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 :(得分: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'}]