我试图通过hive和hadoop运行一个非常简单的python脚本。
这是我的剧本:
#!/usr/bin/env python
import sys
for line in sys.stdin:
line = line.strip()
nums = line.split()
i = nums[0]
print i
我想在下表中运行它:
hive> select * from test;
OK
1 3
2 2
3 1
Time taken: 0.071 seconds
hive> desc test;
OK
col1 int
col2 string
Time taken: 0.215 seconds
我正在跑步:
hive> select transform (col1, col2) using './proba.py' from test;
但总会得到类似的东西:
...
2011-11-18 12:23:32,646 Stage-1 map = 0%, reduce = 0%
2011-11-18 12:23:58,792 Stage-1 map = 100%, reduce = 100%
Ended Job = job_201110270917_20215 with errors
FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.MapRedTask
我已尝试过许多不同的修改程序,但我经常失败。 :(
我做错了什么或者我的hive / hadoop安装有问题吗?
答案 0 :(得分:4)
如果我正在调试,我会检查一些事情:
1)是否将python文件设置为可执行文件(chmod + x file.py)
2)确保python文件位于所有计算机上的相同位置。可能更好 - 将文件放在hdfs然后你可以使用“使用'hdfs://path/to/file.py'”而不是本地路径
3)在hadoop仪表板上查看你的工作(http:// master-node:9100),如果点击失败的任务,它会给你实际的java错误,堆栈跟踪,这样你就可以看到执行中出现了什么问题
4)确保所有从属节点上都安装了python! (我总是忽略这一个)
希望有帮助...
答案 1 :(得分:0)
检查hive.log和/或hadoop作业中的日志(示例中为job_201110270917_20215),以获取更详细的错误消息。
答案 2 :(得分:0)
“失败:执行错误,从org.apache.hadoop.hive.ql.exec.MapRedTask返回代码2”是一个通用错误,当基础map / reduce任务发生异常时,hive返回。您需要转到hive日志文件(位于HiveServer2计算机上)并找到实际的异常堆栈跟踪。