我用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/