【发布时间】:2016-10-18 02:31:36
【问题描述】:
我在 MapR 中有这样的 HIVE 表。
数据在后端用逗号分隔。我正在尝试在使用 python 时使用自定义地图减少。这是python代码。
import sys
import datetime
try:
for line in sys.stdin:
line = line.strip()
userid, movieid, rating, unixtime = line.split(',')
weekday = datetime.datetime.fromtimestamp(float(unixtime)).isoweekday()
print ','.join([userid, movieid, rating, unixtime, str(weekday)])
except:
print sys.exc_info()
我添加了使用add File 的python 脚本,这样提交查询
select TRANSFORM (userid,movieid,rating,unixtime) using 'python mod.py' as (userid,movieid,rating,weekday) from u_data;
我到这里的错误是
(<type 'exceptions.ValueError'>, ValueError('need more than 1 value to unpack',), <traceback object at 0x7f24dea1a0e0>) NULL NULL NULL
为什么会出现这个错误?
【问题讨论】:
-
您应该删除 try/except 并打印完整的异常(和回溯)。
-
我试过了,这里是堆栈跟踪
Caused by: org.apache.hadoop.hive.ql.metadata.HiveException: [Error 20003]: An error occurred when trying to close the Operator running your custom script@RushyPanchal -
我猜你在输入的某处得到了一个空行(也许在最后,如果在最后一行数据之后有一个额外的换行符)。将
if not line: continue添加到您的循环中(就在strip之后)可以让您跳过空白行。