python - 配置单元 Python UDF 错误

标签 python hadoop hive

我有一个简单的 Python 脚本

#!/usr/local/bin/python
import sys
import datetime
for line in sys.stdin:
line = line.strip()
fname , lname = line.split('\t')
l_name = lname.lower()
print '\t'.join([fname, str(l_name)])

Hive 表数据如下所示:

Akash   Gupta
Ashish  Agarwal
Aarav   Kedia
Rajesh  Lakhia
Sunita  Patel
Raj     Dutta
Nadeem  Siddiqui

表结构是:

hive> desc fullName;
OK
fname                   string
lname                   string

我将我的 Python 脚本添加为:

add FILE /full-path-to-the-script/convertToLowerCase.py;

现在,我正在为脚本运行转换操作:

SELECT TRANSFORM(fname, lname) USING 'python convertToLowerCase.py' AS (fname, l_name) FROM fullName;

但是,Map Reduce 作业抛出错误: 失败:执行错误,从 org.apache.hadoop.hive.ql.exec.mr.MapRedTask 返回代码 20003。尝试关闭运行自定义脚本的 Operator 时出错。

我做错了什么?

最佳答案

Python 代码有问题。 For 循环的缩进

这解决了问题。

关于python - 配置单元 Python UDF 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44007657/

相关文章:

python - 在 C 中嵌入 python - 分发

python - 仅替换python中文本文件的第一行

mysql - 使用 Hadoop 更新 MySQL

python - MapReduce,调整Mapper方法

csv - hive 中的额外空行

python - 使用通配符的复杂和自定义 SQL 连接条件

java - 无法从 Eclipse 建立到 Hive 的 JDBC 连接

python - 如何将文件和文件夹移动到指定目录?

hadoop - Pig 程序无缘无故地卡在一个阶段

python - 这个 Python 循环可以更简洁地表达吗?