java - Hadoop Streaming简单作业失败错误python

标签 java python hadoop mapreduce streaming

我是hadoop和mapreduce的新手,我正在尝试编写一个mapreduce,它计算字数txt文件的前10个字数。

我的txt文件“q2_result.txt”如下所示:

yourself        268
yourselves      73
yoursnot        1
youst   1
youth   270
youthat 1
youthful        31
youths  9
youtli  1
youwell 1
youwondrous     1
youyou  1
zanies  1
zany    1
zeal    32
zealous 6
zeals   1

映射器:
#!/usr/bin/env python

import sys

for line in sys.stdin:
    line = line.strip()
    word, count = line.split()
    print "%s\t%s" % (word, count)

reducer :
#!usr/bin/env/ python

import sys

top_n = 0
for line in sys.stdin:
    line = line.strip()
    word, count = line.split()

    top_n += 1
    if top_n == 11:
        break
    print '%s\t%s' % (word, count)

我知道您可以在Hadoop jar命令中将标志传递给-D选项,以便对所需的键进行排序(在我的情况下,计数为k2,2),这里我只是在先使用一个简单的命令:
hadoop jar /usr/hdp/2.5.0.0-1245/hadoop-mapreduce/hadoop-streaming-2.7.3.2.5.0.0-1245.jar -file /root/LAB3/mapper.py -mapper mapper.py -file /root/LAB3/reducer.py -reducer reducer.py -input /user/root/lab3/q2_result.txt -output /user/root/lab3/test_out

所以我认为这样简单的mapper和reducer应该不会给我错误,但是确实可以,但是我不知道为什么,这里的错误是:http://pastebin.com/PvY4d89c

(我正在Ubuntu16.04上的virtualBox上使用Horton Works HDP Sandbox)

最佳答案

我知道,“找不到文件错误”表示与“无法执行文件”完全不同的情况,在这种情况下,问题是无法执行文件。

在Reducer.py中:

错误:

#!usr/bin/env/ python

正确:
#!/usr/bin/env python

关于java - Hadoop Streaming简单作业失败错误python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39794372/

相关文章:

c++ - Hadoop:如何编译libhdfs.so?

java - 避免向泛型列表多次添加内容

python - 有 Python 缓存库吗?

hadoop - 适用于CCA175的Sqoop/Hive:获取表AlreadyExistsException

java - 在 Java 程序中从 Unix 路径读取一个 hadoop 配置文件

python - Django 单元测试 - 如何断言自定义管理器调用 UserManager.create_user 方法?

java - 配置Swagger-ui路径

java - 确定 maven 部署文件的存储库 URL

java - 计算重复字母

python - 应用 Pandas 创建列方法和函数