2016-07-18 2 views
0
02/07/2016 12:43:23.324 PM 
mm/dd/yyyy hh:mm:ss.SSS AM/PM -current format 12 hr 

Пожалуйста, помогите преобразовать это 24-часовой формат в свинью ...Конвертировать 12-часовой формат Дата Время до 24 часов в свинге?

файла в HDFS

02/07/2016 12:43:23.324 PM 
03/08/2016 08:12:15.123 AM 

команд в свинью:

date_data = LOAD 'hdfs path' as (date: chararray); 

todate_data = foreach date_data generate ToDate(date,'yyyy/MM/dd HH:mm:ss.SSS'); 

dump todate_data; 

дает следующее исключение.

java.lang.IllegalArgumentException: Неверный формат: "02/07/2016 12: 43: 23,324 PM" имеет неверный формат на "16 12: 43: 23.324 PM"

ответ

1

Вы должны укажите формат ввода. Например, ваши данные находятся в формате «MM/dd/yyyy hh: mm: ss.SSS aa». Используйте приведенный ниже скрипт.

date_data = LOAD 'hdfs path' as (date: chararray); 
todate_data = foreach date_data generate ToDate(date,'MM/dd/yyyy hh:mm:ss.SSS aa'); 
dump todate_data; 

Ниже приведен рабочий example.The вход 4 даты в «дд/мм/гггг чч: мм: аа СС.ссс» формате.

ВХОД

30/06/2016 02:43:23.324 PM 
01/12/2016 12:43:23.324 AM 
21/08/2016 06:43:23.324 PM 
13/07/2016 12:43:23.324 AM 

SCRIPT

A = LOAD 'test4.txt' AS (create_dt:chararray); 
B = FOREACH A GENERATE ToDate(create_dt,'dd/MM/yyyy hh:mm:ss.SSS aa') AS create_dt; 
DUMP B; 

ВЫХОД

enter image description here

+0

Trie d, но такое же исключение ... – TKHN

+0

@TKHN Я отредактировал ответ на примере. Похоже, вы должны предоставить формат входных данных. –

+0

yeah.It был решен. Я сделал то же самое спасибо :-) – TKHN