看板 java 關於我們 聯絡資訊
我有三台虛擬機,其中我的程式的演算法需要跑四次的map reduce, 我想問假設我有三個文件,如何分配給三台虛擬機, 讓一台機器只處理一份文件。 在程式碼當中我有設定setNumReduceTask(3), 需要三個reducer, 第一個reducer處理第一份文件, 第二個reducer處理第二份文件, 以此類推,分別能夠讓每台對映執行一個文件! 但是會出現問題,就是當這樣設定時, 會發生第一份文件會分給三臺機器處理, 第二個文件也會分給三臺機器處理, 第三個文件也會分給三個機器處理, 出來的結果會有問題, 所以想請問當中的key值要怎麼設,因此在程式方面要如何寫才好? 或者還是有其他方法能夠讓一台機器只處理一份文件 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.167.41.64 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1461115954.A.731.html
longlongint: 輸入檔三行檔名 一台機器算一行 04/20 10:06
longlongint: map的時候弄? 04/20 10:08
longlongint: 另外如果三個檔案不相關 可以直接跑三次 04/20 10:09
ok,目前我有用別的方法好像可以了,也感謝你! ※ 編輯: jimkukky (118.167.41.64), 04/20/2016 19:45:01
realmeat: 你這問題的點在job tracker sheduler的分配問題 04/21 16:14
realmeat: 另外你的形容有點看不懂,你可以先去了解partitioner 04/21 16:17
realmeat: key跟task的關係去看partitioner 04/21 16:21
realmeat: task跟機器的關係要去看sheduler 04/21 16:21
嗯我後來有去看partitioner,大概了解怎麼用了感謝! ※ 編輯: jimkukky (36.229.28.124), 04/22/2016 15:41:10