unixtime to datetime в pyspark - PullRequest
       2

unixtime to datetime в pyspark

1 голос
/ 26 июня 2019

Я пытаюсь преобразовать unix_time в формат даты и времени в pyspark (блоки данных).

пример данных (test_data)

id       unix_time
169042   1537569848

скрипт, который я создал, это

test_data= test_data.withColumn('end_time', from_utc_timestamp(test_data.unix_time, 'PST'))

Я получаю следующую ошибку: -

из-за несоответствия типов данных: аргумент 1 требует тип метки времени, однако 'unix_time' имеет тип bigint

Обновление

выход

unix_time = 1537569848

end_time = 2018-09-21 22:44:08 (это время UTC? Является форматом времени unix по умолчанию utc time?)

end_time_ct = 2018-09-21T22: 44: 08.000 + 0000 (как преобразовать вышеуказанное время в центральное время?)

Мой текущий запрос

from pyspark.sql.functions import *

test_data= test_data.withColumn('end_time', from_unixtime(test_data.unix_time ,"yyyy-MM-dd HH:mm:ss"))

test_data = test_data.withColumn('end_time_ct', from_utc_timestamp(test_data.end_time ,"CT"))

display(test_data)

1 Ответ

1 голос
/ 26 июня 2019

Конфигурация часового пояса для SparkSession может быть установлена ​​на CST или CDT

spark.conf.set("spark.sql.session.timeZone", "CST")

test_data = test_data.withColumn(
    'end_time', 
    from_unixtime(test_data.unix_time , 'yyyy-MM-dd HH:mm:ss')
)

from_unixtime возвращает метку времени по умолчанию timeZone, установленную для SparkSession, котораяможно проверить, запустив:

spark.conf.get('spark.sql.session.timeZone')

Я подозреваю, что его CEST, потому что 2018-09-21 22:44:08 на 2 часа опережает UTC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...