2013-12-17 60 views
1

我正在寻找调试Python UDF的最佳实践。在Python UDF中查看错误消息

我无法获得此UDF的运行,并且我无法获取值出现在日志中的错误消息。

该函数将格式为'DD-MON-YY'的日期作为输入(例如'01 -JAN-2013'),并返回当天发生的那一周的某一周(对于'01 - 2013年1月“,这将是一年的第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

看着你的代码,我发现缩进错误可能是问题的根源(虽然它可能与你的帖子有关,而不是原始代码)。但是,您可以从两个来源看到更详细的错误堆栈: - 猪日志,通常位于文本文件中(例如:pig_1388770791476.log); - Hadoop作业跟踪器:通过点击相关作业,然后在被杀死的任务上,您可以看到错误和相应的堆栈。

+0

任何想法,当在本地模式下运行猪时,这将是什么?猪日志只包含一个通用的错误信息,就像我在上面的帖子中所说的一样。 – duber

+1

日志文件应该放在你的cwd中,例如从您发起咕噜声的位置。您可以使用您的jobtracker ip和端口来访问您的jobtracker管理平台。如果在本地和默认端口,应该是:http://127.0.0.1:50030/jobtracker.jsp – kevad