亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

創建一個單詞長度為key的字典,并在spark中將單詞排序為值?

創建一個單詞長度為key的字典,并在spark中將單詞排序為值?

UYOU 2021-04-11 17:19:59
我是新手,我正嘗試創建一個字典,如下所示:{4: {'aenr': ['earn', 'rane'], 'aerr': ['rare', 'rear'], 'aenw': ['anew', 'wane', 'wean'], 'derw': ['drew']}本質上這應該是使用spark的結構{len(word): {sorted(word):[word1,word2,etc]}我有一個很大的文件,其中包含英語單詞,其結構如下所示:{  "biennials": 0,   "tripolitan": 0,   "oblocutor": 0,   "leucosyenite": 0,   "chilitis": 0,   "fabianist": 0,   "diazeutic": 0,   "alible": 0,   "deciet":0}所以我想逐行讀取文件并創建一個rdd可以保存此內容:{len(word): {sorted(word):[word1,word2,etc]}我已經試過了:    r = rdd.map(lambda x: {len(x):sorted(x)})    items = r.flatMap(lambda line: (line.items()))    items.take(items.count())    groupedItems = items.groupByKey().mapValues(list)    groupedItems.take(groupedItems.count())#j = filter2_rdd    d = groupedItems.collectAsMap()但這會打印以下內容:[{1: {u'{': [u'{']}},{9: {u'abeiilnns': [u'  "biennials": 0, ']}}, {10: {u'aiilnoprtt': [u'  "tripolitan": 0, ']}}, {9: {u'bclooortu': [u'  "oblocutor": 0, ']}}, {12: {u'ceeeilnostuy': [u'  "leucosyenite": 0, ']}}, {8: {u'chiiilst': [u'  "chilitis": 0, ']}}, {9: {u'aabfiinst': [u'  "fabianist": 0, ']}}, {9: {u'acdeiituz': [u'  "diazeutic": 0, ']}}, {6: {u'abeill': [u'  "alible": 0, ']}}, {6: {u'cdeeit': [u'  "deciet":0,']}}, {5: {u'doosw': [u'  "woods": 4601, ']}}, {14: {u'adeejmnnoprrtu': [u'  "preadjournment": 0, ']}}, {7: {u'deiprss': [u'  "spiders": 0, ']}}, {9: {u'aabfiimns': [u'  "fabianism": 0, ']}}, {11: {u'cdgilnoostu': [u'  "outscolding": 0, ']}}, {10: {u'eeilprrsty': [u'  "sperrylite": 0, ']}}, {8: {u'agilnrtw': [u'  "trawling": 0, ']}}, {13: {u'acdeimmoprrsu': [u'  "cardiospermum": 0, ']}}, {10: {u'gghhiilttt': [u'  "lighttight": 0, ']}}, {7: {u'deiprsy': [u'  "spidery": 0, ']}}}我需要將它們按長度和列表中的所有單詞分組
查看完整描述

1 回答

?
MYYA

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']}}


查看完整回答
反對 回復 2021-04-20
  • 1 回答
  • 0 關注
  • 231 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號