499 單詞計數 Map Reduce版本

2022-05-12 01:48:11 字數 1358 閱讀 5236

原題**:

您在真實的面試中是否遇到過這個題?  是

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更高階的資料集 它返回...