hadoop 的 mapreduce 有個入門的程式叫wordcount,相當於其它程式語言的helloworld,是用來統計輸入文字中用指定分隔符切割後得到的每個單詞的出現次數。
現在來說明在linux中如何實現這一功能
1.獲取檔案每一行的每個單詞
這裡用awk命令來實現
awk -f(指定分隔符,預設空格或tab) '}' filename
2.將獲得的每個單詞進行排序
這裡用到sort命令和管道
3.然後進行去重操作
uniq -c 可以去重並顯示出現的次數
例子: 我的檔案是 hello.txt
....... $ cat hello.txt
hello world welcome my zone
hello hadoop my job
hello hadoop
hadoop world
my zone
hello a b c
用命令
awk '}' hello.txt | sort | uniq -c
結果
1 a
1 b1 c
3 hadoop
4 hello
1 job
3 my
1 welcome
2 world
2 zone
這樣就簡單的實現了乙個單詞計數的功能。
如果想單詞在前數字在後,可以再次使用awk命令
awk '}' hello.txt | sort | uniq -c | awk ''
結果
a 1
b 1c 1
hadoop 3
hello 4
job 1
my 3
welcome 1
world 2
zone 2
當然如果想要輸出美觀,可以用awk的格式化輸出 printf
現在我想統計一下單詞出現最多的前三個該怎麼辦?當然就是按出現次數倒序sort,然後head -3
awk '}' hello.txt | sort | uniq -c | awk '' | sort -t ' ' -k2nr | head -3
結果
hello 4
hadoop 3
my 3
至於大檔案執行效率如何,我覺得肯定是mapreduce更好。這個統計小檔案應該還行。如果有不合理的地方,還請老鳥指正出來,謝謝。
sparksql實現單詞計數
1 建立sparksession val sparksession sparksession.builder master local 2 getorcreate 2 載入資料,使用dataset處理資料集 read來讀取可以直接返回dataset string 這是個比rdd更高階的資料集 它返回...
python實現單詞本功能
實現簡單的單詞本 可以新增單詞和詞義,當所新增的單詞已經存在 讓使用者知道 查詢單詞,單詞不存在時,讓使用者知道 刪除單詞,當刪除的單詞不存在時,讓使用者知道 以上功能無限制操作,直到使用者輸入bye推出程式 新增單詞功能def add words word input 請輸入你要新增的單詞 if ...
linux功能命令
埠掃瞄 nc nvz 175.24.120.234 1 1000 建立多級目錄 ssh proxycommand 自動跨過中間節點,直達目標 刪除大檔案或者大量檔案的資料夾 git clone使用 git clone使用非標埠 ssh免密登入 許可權滿足 ssh copy id i ssh id r...