在pyspark中重新排列rdd

osh3o9ms  于 2021-07-13  发布在  Spark
关注(0)|答案(1)|浏览(374)

我有这样的rdd

[('a', [('d2', 1), ('d1', 1)]),
 ('addition', [('d2', 1)]),
 ('administrative', [('d1', 1)]),
 ('also', [('d1', 1)])]

我希望输出看起来像

a#d2:1;d1:1
addition#d2:1
administrative#d1:1
also#d1:1

我试图先去掉括号以获得输出

rdd_new.map(lambda x: re.sub('\(|\)', '', str(x)))
lrl1mhuk

lrl1mhuk1#

您可以使用适当的字符串方法将每个rdd条目Map到一个字符串:

result = rdd.map(lambda r: r[0] + '#' + ';'.join(['%s:%d' % (i[0], i[1]) for i in r[1]]))

result.collect()

# ['a#d2:1;d1:1', 'addition#d2:1', 'administrative#d1:1', 'also#d1:1']

相关问题