<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

        Python開發(fā)MapReduce系列之WordCountDemo

        來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 14:22:52
        文檔

        Python開發(fā)MapReduce系列之WordCountDemo

        Python開發(fā)MapReduce系列之WordCountDemo:我們知道MapReduce是hadoop這只大象的核心,Hadoop中,數(shù)據(jù)處理核心就是 MapReduce 程序設(shè)計模型。一個Map/Reduce 通常會把輸入的數(shù)據(jù)集切分為若干獨立的數(shù)據(jù)塊,由 map任務(wù)(task)以完全并行的方式處理它們。框架會對map的輸出先進(jìn)行排序, 然后把結(jié)果
        推薦度:
        導(dǎo)讀Python開發(fā)MapReduce系列之WordCountDemo:我們知道MapReduce是hadoop這只大象的核心,Hadoop中,數(shù)據(jù)處理核心就是 MapReduce 程序設(shè)計模型。一個Map/Reduce 通常會把輸入的數(shù)據(jù)集切分為若干獨立的數(shù)據(jù)塊,由 map任務(wù)(task)以完全并行的方式處理它們。框架會對map的輸出先進(jìn)行排序, 然后把結(jié)果

        我們知道MapReduce是hadoop這只大象的核心,Hadoop中,數(shù)據(jù)處理核心就是 MapReduce 程序設(shè)計模型。一個Map/Reduce 通常會把輸入的數(shù)據(jù)集切分為若干獨立的數(shù)據(jù)塊,由 map任務(wù)(task)以完全并行的方式處理它們。框架會對map的輸出先進(jìn)行排序, 然后把結(jié)果輸入給reduce任務(wù)。通常作業(yè)的輸入和輸出都會被存儲在文件系統(tǒng)中。因此,我們的編程中心主要是 mapper階段和reducer階段。

        下面來從零開發(fā)一個MapReduce程序,并在hadoop集群上運行。
        mapper代碼 map.py:

         import sys 
         for line in sys.stdin:
         word_list = line.strip().split(' ') 
         for word in word_list: print '	'.join([word.strip(), str(1)])

        View Code

        reducer代碼 reduce.py:

         import sys
         
         cur_word = None
         sum = 0 
         for line in sys.stdin:
         ss = line.strip().split('	') 
         if len(ss) < 2: continue
         
         word = ss[0].strip()
         count = ss[1].strip() 
         if cur_word == None:
         cur_word = word 
         if cur_word != word: print '	'.join([cur_word, str(sum)])
         cur_word = word
         sum = 0
         
         sum += int(count) 
         print '	'.join([cur_word, str(sum)])
         sum = 0

        View Code

        資源文件 src.txt(測試用,在集群中跑時,記得上傳到hdfs上):

        hello 
         ni hao ni haoni hao ni hao ni hao ni hao ni hao ni hao ni hao ni hao ni hao ni hao ni hao ao ni haoni hao ni hao ni hao ni hao ni hao ni hao ni hao ni hao ni hao ni hao ni haoao ni haoni hao ni hao ni hao ni hao ni hao ni hao ni hao ni hao ni hao ni hao ni hao
         Dad would get out his mandolin and play for the family
         Dad loved to play the mandolin for his family he knew we enjoyed singing
         I had to mature into a man and have children of my own before I realized how much he had sacrificed
         I had to,mature into a man and,have children of my own before.I realized how much he had sacrificed

        View Code

        首先本地調(diào)試查看結(jié)果是否正確,輸入命令以下:

        cat src.txt | python map.py | sort -k 1 | python reduce.py

        命令行中輸出的結(jié)果:

        a 2
         and 2
         and,have 1
         ao 1
         before 1
         before.I 1
         children 2
         Dad 2
         enjoyed 1
         family 2
         for 2
         get 1
         had 4
         hao 33
         haoao 1
         haoni 3
         have 1
         he 3
         hello 1
         his 2
         how 2
         I 3
         into 2
         knew 1
         loved 1
         man 2
         mandolin 2
         mature 1
         much 2
         my 2
         ni 34
         of 2
         out 1
         own 2
         play 2
         realized 2
         sacrificed 2
         singing 1
         the 2
         to 2
         to,mature 1
         we 1
         would 1

        View Code

        通過調(diào)試發(fā)現(xiàn)本地調(diào)試,代碼是OK的。下面扔到集群上面跑。為了方便,專門寫了一個腳本 run.sh,解放勞動力嘛。

        HADOOP_CMD="/home/hadoop/hadoop/bin/hadoop"
         STREAM_JAR_PATH="/home/hadoop/hadoop/contrib/streaming/hadoop-streaming-1.2.1.jar"
         
         INPUT_FILE_PATH="/home/input/src.txt"
         OUTPUT_PATH="/home/output"
         
         $HADOOP_CMD fs -rmr $OUTPUT_PATH 
         
         $HADOOP_CMD jar $STREAM_JAR_PATH -input $INPUT_FILE_PATH -output $OUTPUT_PATH 
         -mapper "python map.py" -reducer "python reduce.py" -file ./map.py -file ./reduce.py

        下面解析下腳本:

         HADOOP_CMD: hadoop的bin的路徑
         STREAM_JAR_PATH:streaming jar包的路徑
         INPUT_FILE_PATH:hadoop集群上的資源輸入路徑
         OUTPUT_PATH:hadoop集群上的結(jié)果
        輸出路徑。(注意:這個目錄不應(yīng)該存在的,因此在腳本加了先刪除這個目錄。**注意****注意****注意**:若是第一次執(zhí)行,沒有這個目錄,會報錯的。可以先手動新建一個新的output目錄。) $HADOOP_CMD fs -rmr $OUTPUT_PATH $HADOOP_CMD jar $STREAM_JAR_PATH -input $INPUT_FILE_PATH -output $OUTPUT_PATH -mapper "python map.py" -reducer "python reduce.py" -file ./map.py -file ./reduce.py #這里固定格式,指定輸入,輸出的路徑;指定mapper,reducer的文件; #并分發(fā)mapper,reducer角色的我們用戶寫的代碼文件,因為集群其他的節(jié)點還沒有mapper、reducer的可執(zhí)行文件。

        輸入以下命令查看經(jīng)過reduce階段后輸出的記錄:

        cat src.txt | python map.py | sort -k 1 | python reduce.py | wc -l
        命令行中
        輸出:43

        在瀏覽器輸入:master:50030 查看任務(wù)的詳細(xì)情況。

        Kind % Complete Num Tasks Pending Running Complete Killed Failed/Killed Task Attempts
        map 100.00% 2 0 0 2 0 0 / 0
        reduce 100.00% 1 0 0 1 0 0 / 0

        Map-Reduce Framework中看到這個。

        Counter   Map Reduce Total
        Reduce output records 0   0    43

        證明整個過程成功。第一個hadoop程序開發(fā)結(jié)束。

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        Python開發(fā)MapReduce系列之WordCountDemo

        Python開發(fā)MapReduce系列之WordCountDemo:我們知道MapReduce是hadoop這只大象的核心,Hadoop中,數(shù)據(jù)處理核心就是 MapReduce 程序設(shè)計模型。一個Map/Reduce 通常會把輸入的數(shù)據(jù)集切分為若干獨立的數(shù)據(jù)塊,由 map任務(wù)(task)以完全并行的方式處理它們。框架會對map的輸出先進(jìn)行排序, 然后把結(jié)果
        推薦度:
        標(biāo)簽: word ma python
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 国产真人无码作爱免费视频 | 久久亚洲2019中文字幕| 亚洲13又紧又嫩又水多| 日本视频一区在线观看免费| 亚洲国产一区二区a毛片| 久久精品中文字幕免费| 亚洲AV日韩精品久久久久久久 | 国产黄色一级毛片亚洲黄片大全| 老司机午夜精品视频在线观看免费| 青青青青青青久久久免费观看| 亚洲成a人片在线观看精品| 成人片黄网站色大片免费| 亚洲欧美日韩中文无线码| 国产一区二区三区在线免费观看| 男男gay做爽爽免费视频| 久久精品国产亚洲AV不卡| 在线观看免费播放av片| 久久久久亚洲av无码专区蜜芽 | 日韩精品成人无码专区免费| 亚洲免费综合色在线视频| 免费在线看片网站| 大地资源网高清在线观看免费| 亚洲色成人网一二三区| 成人毛片免费视频| 国产乱妇高清无乱码免费| 久久亚洲成a人片| 女人18毛片a级毛片免费视频| 黄色a三级免费看| 五月天网站亚洲小说| 国产麻豆视频免费观看| 瑟瑟网站免费网站入口| 亚洲Av永久无码精品三区在线| 手机在线看永久av片免费| 美女视频黄频a免费大全视频| 亚洲AV午夜福利精品一区二区| 妻子5免费完整高清电视| 日本永久免费a∨在线视频| 久久av无码专区亚洲av桃花岛| 永久免费AV无码网站在线观看| 亚洲免费人成在线视频观看| 亚洲日韩精品A∨片无码加勒比|