理解MapReduce

1. 用Python編寫WordCount程序並提交任務python

程序函數

WordCountoop

輸入測試

一個包含大量單詞的文本文件spa

輸出code

文件中每一個單詞及其出現次數(頻數),並按照單詞字母順序排序,每一個單詞和其頻數佔一行,單詞和頻數之間有間隔blog

  1. 編寫map函數,reduce函數
  2. 將其權限做出相應修改
  3. 本機上測試運行代碼
  4. 放到HDFS上運行
    1. 將以前爬取的文本文件上傳到hdfs上
    2. 用Hadoop Streaming命令提交任務
  5. 查看運行結果

 

複製代碼
#! /usr/bin/python3
# Map函數
import sys
for line in sys.stdin:
     line=line.strip()
     words=line.split()
     for word in words:
          print ('%s\t%s' % (word,1))
複製代碼
複製代碼
#! /usr/bin/python3
 
# Reduce函數
from operator import itemgetter
import sys
current_word=None
current_count=0
word=None
 
for line in sys.stdin:
     line=line.strip()
     word,count=line.split('\t',1)
     try:
          count=int(count)
     except ValueError:
          continue
     if current_word==word:
          current_count+=count
     else:
          if current_word:
              print ('%s\t%s' % (current_word,current_count))
          current_count=count
          current_word=word
if current_word==word:
     print ('%s\t%s' % (current_word,current_count))
相關文章
相關標籤/搜索