[hadoop入门]mapper与reducer(word_count计数demo)

1、mapper

#!/usr/bin/env python
import sys
for line in sys.stdin:
    line = line.strip()
    words = line.split()
    for word in words:
        print "%s\t%s" % (word, 1)

2、reducer(reduce执行之前不一定整体有序,在归并的过程中一直在执行reduce代码)

#!/usr/bin/env python
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:  #count如果不是数字的话,直接忽略掉
        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 word == current_word:  #不要忘记最后的输出
    print "%s\t%s" % (current_word, current_count)

 

3、提供权限命令

chmod +x  文件名

 

posted @ 2018-11-23 23:59  Elpsywk  阅读(400)  评论(0编辑  收藏  举报