Как преобразовать время в миллисекунды из даты ГГГГ-ММ-ДД ЧЧ: ММ: СС в Apache Pig
У меня одно свидание chararray 2014-11-02 16:57:29. я хочу преобразовать это в долго, как я могу это сделать?
Я попробовал по ссылке https://pig.apache.org/docs/r0.14.0/api/org/apache/pig/piggybank/evaluation/datetime/convert/ISOToUnix.html
DEFINE ISOToUnix org.apache.pig.piggybank.evaluation.datetime.convert.ISOToUnix();
DEFINE CustomFormatToISO org.apache.pig.piggybank.evaluation.datetime.convert.CustomFormatToISO();
ISOin = LOAD '/user/sample/test.csv' USING PigStorage() AS (dt:chararray, dt2:chararray);
toUnix = FOREACH ISOin GENERATE ISOToUnix(CustomFormatToISO(dt, 'YYYY-MM-DD HH:MM:SS')) AS event_time;
DUMP toUnix;
test.csv содержит 2014-11-02 16:57:29 2014-11-02 13:13:05
я получаю
[POUserFunc (Имя: POUserFunc(org.apache.pig.piggybank.evaluation.datetime.convert.ISOToUnix)[long] - ключ оператора scope-5: scope-5) children: null в []]: java.lang.NullPointerException,
Может кто-нибудь, пожалуйста, помогите мне. Спасибо
1 ответ
ISOToUnix(CONCAT(REPLACE(dt, ' ', 'T'), '.000Z')) выглядит хорошим быстрым ответом. здесь мы конвертируем строку в iso, затем используем ISOToUnix, используя правильный часовой пояс