Hadoop Streaming 为每个字数记录提供 null

问题描述

我编写了一个用于 Hadoop Streaming 的简单字数统计程序。 我在本地测试了该程序,它给出了预期的结果。 然而,使用 Hadoop Streaming 时,它可以区分所有单词,但为计数提供 null。

这是用于字数映射器的代码

#!/usr/bin/python3

import sys

for line in sys.stdin:
    data_list = line.split("\t")
    if (len(data_list) >= 3):
        if ('actor' in str(data_list[3])):
            print data_list[0]
        

这里是减速器:

#!/usr/bin/python3

import sys


word_dict = {}


for line in sys.stdin:
    v = line.strip()
    if word_dict.has_key(v):
        word_dict[v] += 1
    else:
        word_dict[v] = 1

print 'tconst' + "\t" + 'actors'
for key in word_dict:
    print str(key) + "\t" + str(word_dict[key])

这是我使用的命令

hadoop jar /usr/lib/hadoop-mapreduce/hadoop-streaming.jar \
-file mapper.py  -mapper 'python mapper.py' \
-file reducer.py  -reducer 'python reducer.py' \
-input input/datasource1 \
-output output_mr3 \
-outputformat org.apache.hadoop.mapred.SequenceFileOutputFormat\

如何修改代码以使字数统计工作?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)