我用python为PIG写了一个简单的UDF

@outputSchema("date: chararray")
def to_date2(dt):
  print dt
  a = dt.split("/")
  print a
  return "20" + a[2] + a[0] + a[1]

我正在读取CSV,其中包含“1/1/17”列,并且我正在尝试使用此UDF将其转换为201711

我得到一个错误
Caused by: Traceback (most recent call last):
   File "/tmp/pig715837049480092569tmp/util2.py", line 20, in to_date2
 IndexError: index out of range: 2

但在作业运行日志中看不到任何打印语句。

如果我正在编写python UDF,如何将内容打印到Hadoop日志中?这样我就可以知道传递给函数的dt的值是什么?

最佳答案

我觉得您应该使用strptime解析日期,而不是拆分

from datetime import date
dt = date.strptime(dt, '%d/%m/%y')
return dt.strftime('%Y%m%d')

如果要删除前导零(应保留或至少保留一些定界符以避免将201711解析为Nov 2017),请参见this answer

关于hadoop - 如何对PIG中的python UDF进行故障排除,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50574141/

10-16 21:29