在Hadoop上运行Python

时间:2011-11-18 11:33:39

标签: python hadoop hive

我试图通过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安装有问题吗?

3 个答案:

答案 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计算机上)并找到实际的异常堆栈跟踪。