原題**:
您在真實的面試中是否遇到過這個題? 是
chunk2: "lintcode code bye"
get mapreduce result:
bye: 2
goodbye: 1
google: 1
hadoop: 1
code: 2
lintcode: 1
標籤
big data
map reduce
思路:沒怎麼看懂這道題什麼意思,參照著網上的**捋了一遍。
map類負責對原始資料進行處理,將字串拆分成單詞後輸出到output; reduce負責對map輸出的資料進行計數。**此文
即:map函式對輸入的文字進行分詞處理,然後輸出(單詞, 1)這樣的結果,例如「you are a young man」,輸出的就是(you, 1), (are, 1) 之類的結果;
在reduce函式中,我們把具有相同key的結果聚合起來。reduce函式的第二個引數型別為input, 這是一堆value的集合,他們具有相同的key,reduce函式的意義就是將這些結果聚合起來。
例如(」hello「, 1)和(」hello「, 1)聚合為(」hello「, 2),後者可能再次和(」hello「, 3) (」hello「, 1),聚合為(」hello「, 7)。 **此文
ac**:
/** * definition of input:
* template* class input */
public
:
void map(input*input)
}input->next();}}
};class wordcountreducer: public
reducer
output(key,sum);
}};
**中有三處不明白,
第乙個是map函式中vector陣列的作用,將其注釋掉也可以ac;
第二個是 while(!input->done())為什麼不是 while(input->done()),done()函式不是如果容器有元素就返回true嗎……;
第三個是 for(int i=0;i<=(int)str.size();i++),for迴圈的判斷句為何是小於等於?後來這個問題想明白了,如果只是小於,會漏掉最後乙個單詞。因為當i為最後乙個單詞最後乙個字元索引時,str【i】不為『 』,且i =size-1小於size,導致if塊內語句無法執行。
其他參考:c++中substr的用法
c++中substr函式的用法
【c++】c++中substr的用法
Spark Streaming 單詞計數
從資料來源接收資料,然後把資料儲存在記憶體中供spark streaming使用,在本地執行spark streaming不能設定master為local或者local 1 此時執行的執行緒只有乙個,因為需要乙個執行緒去執行receiver接收資料,因此,就沒有執行緒去處理資料了 def main ...
結對專案 單詞計數
專案1 wordcount 單詞計數 1.1 專案要求 wc.exe是乙個常見的工具,它能統計文字檔案的字元數 單詞數和行數。這個專案要求寫乙個命令列程式,模仿已有wc exe的功能,並加以擴充,給出某程式語言原始檔的字元數 單詞數和行數。實現乙個統計程式,它能正確統計程式檔案中的字元數 單詞數 行...
sparksql實現單詞計數
1 建立sparksession val sparksession sparksession.builder master local 2 getorcreate 2 載入資料,使用dataset處理資料集 read來讀取可以直接返回dataset string 這是個比rdd更高階的資料集 它返回...