1 回答
TA贡献1868条经验 获得超4个赞
您不能立即这样map()
做len()
,sorted()
因为您失去了最初的价值。这是一种实现方法:
map
创建密钥sorted(x)
groupByKey
--sorted(x)
map
创建密钥len(x)
groupByKey
--len(x)
collectAsMap()
ResultIterable
如果要打印出来,可能需要将s转换为特定的python类型:
例如(假设您已将所有单词并行化为rdd
):
In []:
(rdd
.map(lambda x: (''.join(sorted(x)), x))
.groupByKey()
.mapValues(lambda x: list(x))
.map(lambda x: (len(x[0]), x))
.groupByKey()
.mapValues(lambda x: dict(x))
.collectAsMap())
Out[]:
{6: {'abeill': ['alible'], 'cdeeit': ['deciet']},
8: {'chiiilst': ['chilitis']},
9: {'aabfiinst': ['fabianist'],
'abeiilnns': ['biennials'],
'acdeiituz': ['diazeutic'],
'bclooortu': ['oblocutor']},
10: {'aiilnoprtt': ['tripolitan']},
12: {'ceeeilnostuy': ['leucosyenite']}}
添加回答
举报