2013-12-17 79 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