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']}}
添加回答
舉報