1 回答

TA貢獻(xiàn)1868條經(jīng)驗(yàn) 獲得超4個(gè)贊
您不能立即這樣map()
做len()
,sorted()
因?yàn)槟チ俗畛醯膬r(jià)值。這是一種實(shí)現(xiàn)方法:
map
創(chuàng)建密鑰sorted(x)
groupByKey
--sorted(x)
map
創(chuàng)建密鑰len(x)
groupByKey
--len(x)
collectAsMap()
ResultIterable
如果要打印出來,可能需要將s轉(zhuǎn)換為特定的python類型:
例如(假設(shè)您已將所有單詞并行化為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']}}