Ошибка кастинга Pig ToDate

У меня есть поле даты, которое я пытаюсь использовать как «ToDate» через Даты выглядят так

2015-03-28@18:21:18.

ToDate(REPLACE(REPLACE(Date_Time, '@', ' '),'.',''),'yyyy-MM-dd HH:mm:ss')

Работа умирает и дает мне эту ошибку; Ошибка бэкэнда: неверный формат: ""

У меня уже есть фильтры, которые учитывают значения NULL, а также SIZE > 0 для пробелов.


person chattrat423    schedule 29.05.2015    source источник


Ответы (1)


Тип возвращаемого значения функции ToDate — объект DateTime. Вам НЕ нужно заменять @, . символы с '' (пробел).

Ссылка: http://pig.apache.org/docs/r0.12.0/func.html#to-date, подробнее

Ввод: a.csv

 2015-03-28@18:21:18.

Свинья Скрип :

  A = LOAD 'a.csv' AS (dateValue:chararray);
  B = FOREACH A GENERATE ToDate(dateValue,'yyyy-MM-dd@HH:mm:ss.');
  DUMP B; 

Вывод:

    (2015-03-28T18:21:18.000-07:00)

У нас также есть перегруженная функция ToDate, где мы можем указать часовой пояс.

Например: указание часового пояса по Гринвичу

  B = FOREACH A GENERATE ToDate(dateValue,'yyyy-MM-dd@HH:mm:ss.','GMT');
  DUMP B;

Вывод 2:

 (2015-03-28T18:21:18.000Z) 
person Murali Rao    schedule 29.05.2015