我是pyspark的新手 我有一个如下表所示的数据。我想要品牌中的每一个元素都是'成为我的钥匙和布料'是我的价值。我怎么能在pyspark做到这一点?
cloths |Brand
-------------
shirt |[x,y]
|
pants |[x,y,z,hi]
想要输出:
x:shirt
y:shirt
x:pants
y:pants
z:pants
hi:pants
感谢您的帮助
答案 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'}]