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']}}
添加回答
举报
