PySpark to_utc_timestamp возвращает то же время - PullRequest
0 голосов
/ 17 марта 2020

У меня есть таблица с датой и временем в виде строки. Я хочу преобразовать его в метку времени UT C. Мой местный часовой пояс - CDT. Сначала я конвертирую дату и время в метку времени.

table = table.withColumn('datetime_dt', unix_timestamp(col('datetime'), "yyyy-MM-dd HH:mm:ss").cast("timestamp"))

Затем я пытаюсь преобразовать этот столбец отметки времени в UT C время.

table = table.withColumn('datetime_UTC',  to_utc_timestamp(table.datetime_dt, 'CDT'))

Я также пытаюсь это

table = table.withColumn('datetime_UTC',  to_utc_timestamp(col('datetime_dt'), 'CDT'))

Но он возвращает те же результаты. Вот несколько примеров.

------------------------------------------------------------------
|   datetime         |     datetime_dt     |    datetime_UTC     |
------------------------------------------------------------------
|2019-01-01 00:49:00 | 2019-01-01 00:49:00 | 2019-01-01 00:49:00 |
------------------------------------------------------------------
|2019-01-01 02:06:00 | 2019-01-01 02:06:00 | 2019-01-01 02:06:00 |
------------------------------------------------------------------
|2019-01-02 05:15:00 | 2019-01-02 05:15:00 | 2019-01-02 05:15:00 |
------------------------------------------------------------------

Почему он дает то же самое время без какого-либо преобразования? Я импортирую to_utc_timestamp из pyspark.sql.functions.

1 Ответ

0 голосов
/ 17 марта 2020

Укажите часовой пояс как CST (или) America/Chicago вместо CDT, нам не нужно явно упоминать о переходе на летнее время время.

  • Spark внутренне рассчитывает и добавляет +5:00/+6:00 на основе даты.

Example:

df.show()
#+-------------------+
#|                 dt|
#+-------------------+
#|2019-01-01 00:49:00|
#|2019-11-01 00:49:00|
#+-------------------+

df.withColumn('datetime_UTC',  to_utc_timestamp(col('dt'), 'CST')).show(10,False)

#or

df.withColumn('datetime_UTC',  to_utc_timestamp(col('dt'), 'America/Chicago')).show(10,False)

#+-------------------+---------------------+
#|dt                 |datetime_UTC         |
#+-------------------+---------------------+
#|2019-01-01 00:49:00|2019-01-01 06:49:00.0|
#|2019-11-01 00:49:00|2019-11-01 05:49:00.0|
#+-------------------+---------------------+
...