2016-08-18 4 views
1

У меня есть блок данных искры, построенный из контекста sql. Я усекал поле datetime, используя DATE_FORMAT(time, 'Y/M/d HH:00:00') AS time_hourlyПреобразовать столбец данных данных Spark из строки на сегодняшний день

Теперь тип столбца - это строка. Как преобразовать столбцы данных DataFrame в тип datetime?

ответ

0

Вы можете использовать trunc (дата столбца, формат), чтобы не потерять дату. Существует функция to_date преобразовать строку на сегодняшний день

+0

Я пробовал 'trunc (column date, format)' и работает, когда ** формат «MONTH» ** BUT возвращает null, когда ** формат «HOUR» ** - что мне делать? – Owen

+0

Можете ли вы, пожалуйста, процитировать данные, которые вы пытаетесь – Hari

+0

Я думаю, что это сработает для вас myData.selectExpr ("timestamp (from_unixtime (unix_timestamp (date_format (ts, 'Y/M/d HH: 00: 00'), 'Y/M/d HH: мм: сс))), как dt_formatted «) Результаты: ====== корень | - dt_formatted: метка времени (обнуляемым = TRUE) + ----- --------------- + | dt_formatted | + -------------------- + | 2015-12-27 05:00: ... | + -------------------- + – Hari

0

Предполагая, что ФР вашего dataframe и имя столбца быть брошенным является time_hourly Вы можете попробовать следующее:

from pyspark.sql.types import DateType 
df.select(df.time_hourly.cast(DateType()).alias('datetime')) 

Для получения дополнительной информации смотрите:

1) документация "литой()" https://spark.apache.org/docs/1.6.2/api/python/pyspark.sql.html

2) документирование типов данных https://spark.apache.org/docs/1.6.2/api/python/_modules/pyspark/sql/types.html

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