Как устранить неполадки UDF Python в PIG - PullRequest
0 голосов
/ 29 мая 2018

Я написал простой UDF на python для PIG

@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", и я пытаюсь преобразовать его в 201711, используяэтот UDF.

Я получаю ошибку

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 было передано моей функции?

1 Ответ

0 голосов
/ 29 мая 2018

Я чувствую, что вы должны использовать strptime для разбора дат, а не для разделения

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

Если вы хотите удалить начальные нули (которые вы должны сохранить, или, по крайней мере, оставить разделитель, чтобы избежать 201711)анализируется как Nov 2017), см. этот ответ

...