2017-02-14 2 views
0

Я новичок в искру. Мне нужно изменить формат даты в фрейме данных искры, который находится в String. Мне нужно удалить /, а также 00:00:00. Я пытался использоватьCAST (unix_timestamp (Column, Format)), показывающий неправильную дату в Spark с использованием scala

to_date(unix_timestamp($"Date", "YYYY-MM-DD 00-00-00").cast("timestamp")) 

Формат меняется, как ожидалось, но с некоторой случайной датой. Я нашел проблему с unix_timestamp Dataframe импортируется из файла CSV. Я получил решение с использованием регулярного выражения, но было бы лучше знать, почему он не работает.

Код, используемый: (Код не может быть точным, но похоже)

df.select(unix_timestamp($"Date", "MM-DD-YYYY hh:mm:ss").cast("timestamp"),$"Date") 

Sample Output:

+0

Какую версию Spark вы используете? – pheeleeppoo

+0

Версия 1.6.2 –

ответ

0

Попробуйте что-то вроде этого:

df.select((unix_timestamp($"Date", "MM/dd/yyyy HH:mm:ss") * 1000).cast("timestamp"), $"Date") 

См here подробности.

+0

Объяснение нижней части может быть полезно, чтобы понять, что не так. – pheeleeppoo

+0

Спасибо за ваш ответ. Работает, когда я использую yyyy-MM-dd HH: mm: ss. Так в чем же разница между Caps MM: DD против mm: dd: yy? –

Смежные вопросы