streming调试
0清风444 2017/06/13 22:01你可以在本地模拟MR的过程,比如以经典的wordcount为例:cat ~/data/words.txt | python word_count_mapper.py | sort | python word_count_reducer.py | sort -nr -k 2 |head -n 10顺便给你贴一下py代码#!/usr/bin/env pyt
链接:https://www.oschina.net/question/2861327_2244973
0
清风444 2017/06/13 22:01
你可以在本地模拟MR的过程,比如以经典的wordcount为例:
cat ~/data/words.txt | python word_count_mapper.py | sort | python word_count_reducer.py | sort -nr -k 2 |head -n 10
顺便给你贴一下py代码
#!/usr/bin/env python
#-- coding=utf8 --
import sys,re
re_english = re.compile(u’[^a-zA-Z0-9-]+’)
for line in sys.stdin: #这里你可以看做是map类中的line输入
words = re_english.sub(’ ',line.strip()) #这里只提取英文数字
for word in words.split():
print ‘%s\t%s’ % (word, 1) #这儿就是标准的输出,用tab隔开 默认第一个值为key
word_count_mapper.py
!/usr/bin/env python
#-- coding=utf8 --
import sys
lastk = None #这里标志最后一个k 用于控制同一个key 到一个组中
count = 0
for line in sys.stdin:
w,c = line.split(’\t’)
c = int© #不转成int会比较麻烦 这是是计数
if lastk == None: #这里是判断是否过来的是第一个key
lastk=w
count += c
elif lastk == w:
count += c
else:
print “%s\t%s”%(lastk,count)
lastk=w
count = c #这里重置计数
if lastk is not None:
print “%s\t%s”%(lastk,count)
word_count_reducer.py
更多推荐
所有评论(0)