在Hadoop上运行Python

4 投票
3 回答
4479 浏览
提问于 2025-04-17 06:34

我正在尝试通过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

"失败:执行错误,来自 org.apache.hadoop.hive.ql.exec.MapRedTask 的返回代码 2" 是 Hive 在底层的 map/reduce 任务出现问题时返回的一个通用错误。你需要去 HiveServer2 机器上的 Hive 日志文件中查找实际的异常堆栈信息。

0

查看 hive.log 文件和/或你提到的 Hadoop 任务的日志(比如 job_201110270917_20215),这样可以找到更详细的错误信息。

4

如果我在调试这个问题,我会检查几个方面:

1) 确保你的Python文件是可执行的(可以用命令chmod +x file.py来设置)

2) 确保在所有机器上,Python文件的位置是一样的。更好的办法是把文件放在hdfs上,这样你可以用“hdfs://path/to/file.py”来代替本地路径

3) 查看一下你的作业在hadoop仪表板上的情况(http://master-node:9100),如果你点击一个失败的任务,它会给你实际的Java错误和堆栈跟踪,这样你就能看到执行过程中到底出了什么问题

4) 确保所有的从节点上都安装了Python!(我总是忽略这一点)

希望这些能帮到你……

撰写回答