如何解决pig中的python自定义项问题

l2osamch  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(487)

我用python为pig编写了一个简单的udf

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

我正在读一个csv,它有一个类似“1/1/17”的列,我正在尝试将它转换为 201711 使用此自定义项。
我出错了

  1. Caused by: Traceback (most recent call last):
  2. File "/tmp/pig715837049480092569tmp/util2.py", line 20, in to_date2
  3. IndexError: index out of range: 2

但我在作业运行日志中看不到任何打印语句。
如果我正在编写python自定义项,如何将内容打印到hadoop日志中?所以我可以看到传递给我函数的dt值是多少?

332nm8kg

332nm8kg1#

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

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

如果您想删除前导零(您应该保留它,或者至少保留一些分隔符以避免将201711解析为 Nov 2017 ),看到这个答案了吗

相关问题