我正在寻找调试Python UDF的最佳实践。
我无法运行此UDF,并且无法在日志中显示有价值的错误消息。
此函数将格式为'DD-MON-YY'的日期作为输入(例如'01 -JAN-2013')并返回当天作为输出发生的那一周的星期(For'01 -JAN -2013',这将是一年中的第0周,因此返回值将为0)。
@outputSchema("week_number:int")
def week_from_date(input_date):
date_to_match = re.match('(\d{2}).?([A-Za-z]{3}).?(\d{4})', input_date)
if date_to_match:
day, month, year = date_to_match.group(1), date_to_match.group(2), date_to_match.group(3)
import time
from time import gmtime, strftime
d = time.strptime("%s %s %s" % (day, month, year), "%d %b %Y")
return int(strftime("%U", d))
else:
return -1
我收到此错误:Backend error : Error executing function
无论如何都要获得更具描述性的错误消息?调试Python UDF的最佳实践是什么?
答案 0 :(得分:0)
查看您的代码,我发现缩进错误可能是问题的根源(尽管它可能与您的帖子有关,而不是原始代码)。
但是,您可以从两个来源看到更详细的错误堆栈: - 猪日志,通常在文本文件中(例如:pig_1388770791476.log); - Hadoop作业跟踪器:通过单击相关作业然后单击已终止任务,可以看到错误和相应的堆栈。