用Mapreduce實現(xiàn)單詞個數(shù)統(tǒng)計

首先有三個文件 red_new.py map_new.py run.sh
代碼如下
map_new.py

import sys


for line in sys.stdin: // //系統(tǒng)模塊
        ss = line.strip().split(' ') ////我們讀的每一句話都按空格分開,strip()避免輸入的 字符串有回車,制表符等隱含字符
        for word in ss:
                print '\t'.join([word.strip(), '1'])//這個單詞就是key,當這個單詞被我觀察到一次,就加一個1

red_new.py

import sys
cur_word = None
sum = 0

for line in sys.stdin:  //標準輸入
        ss = line.strip().split('\t')  // 按照輸出重新變成一個數(shù)字
        if len(ss) != 2:  //把ss當作一個數(shù)組進行遍歷,if判斷這個數(shù)組是不是有兩列,這兩列分別存儲 word和count,避免一些臟數(shù)據(jù)
                continue
        word, cnt = ss

        if cur_word == None:
                cur_word = word

        if cur_word != word:
                print '\t'.join([cur_word, str(sum)])
                cur_word = word
                sum = 0

        sum += int(cnt)

print '\t'.join([cur_word, str(sum)])

run.sh

HADOOP_CMD="/usr/local/src/hadoop-1.2.1/bin/hadoop"
STREAM_JAR_PATH="/usr/local/src/hadoop-1.2.1/contrib/streaming/hadoop-streaming-1.2.1.jar"

#INPUT_FILE_PATH_1="/The_Man_of_Property.txt"
INPUT_FILE_PATH_1="/1.data"
OUTPUT_PATH="/output"

$HADOOP_CMD fs -rmr -skipTrash $OUTPUT_PATH

# Step 1.
$HADOOP_CMD jar $STREAM_JAR_PATH \
    -input $INPUT_FILE_PATH_1 \
    -output $OUTPUT_PATH \
    -mapper "python map_new.py" \
    -reducer "python red_new.py" \
    -file ./map_new.py \
    -file ./red_new.py
~                                  

mapreduce的核心思想是分而治之,先用map函數(shù)對數(shù)據(jù)進行拆分成一個個單詞,然后用reduce對這些單個的單詞進行匯總。
先用 python的方式來檢查一下
安裝好hadoop之后,用集群的方式搭建,啟動 hadoop ,進入到hadoop安裝目錄
如果是第一次啟動需要進行格式化./hadoop namenode -format (就像你買的電腦磁盤也需要進行格式化成fat32格式才能用,格式化主要是針對HDFS)

命令: ./bin/start-all.sh
命令 :jps 查看主節(jié)點和從節(jié)點的狀態(tài)

主節(jié)點看到j(luò)ob tracker
1779 JobTracker
1940 Jps
1699 SecondaryNameNode
1556 NameNode
從節(jié)點上看到tasktracke
1018 -- process information unavailable
1446 Jps
1263 DataNode
1334 TaskTracke

1.png

首先提交文件
命令:/usr/local/src/hadoop-1.2.1/bin/hadoop fs -put ./map_new.py /
共3個文件 red_new.py map_new.py 文章
用hadoop方式
訪問:http://192.168.95.128:50030/jobdetails.jsp?jobid=job_201801071700_0003
/usr/local/src/hadoop-1.2.1/bin/hadoop fs -text /output/part-00000
2.png

刪除文件
/usr/local/src/hadoop-1.2.1/bin/hadoop fs -rmr /The_Man_of_Property.txt

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容