python的hadoop streaming怎么进行快速的debug啊

sandy_zs 发布于 2017/06/13 19:52
阅读 122
收藏 0

每一次都要在haddoop环境里面跑起来之后再看调试,太麻烦啦,请问各位大神有木有快速的调试方法呢^_^

加载中
0
清风444

你可以在本地模拟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(c) #不转成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
s
sandy_zs

果然可行  谢了谢了

返回顶部
顶部