Получение правильного смещения для часового пояса с использованием current_timestamp в apache spark - PullRequest
0 голосов
/ 07 апреля 2020

Я новичок в Java и Apache spark и пытаюсь понять временную метку и использование часового пояса. Я хотел бы, чтобы все временные метки были сохранены в часовом поясе EST на SQL сервере из данных, которые я получаю от apache spark DF.

Когда я использую current_timestamp, я получаю правильное время EST, но смещение, которое я получаю, когда смотрю на данные, равно «+00: 00» вместо «-04: 00».

Вот значение, хранящееся в базе данных, которое передается из набора искровых данных: 2020-04-07 11:36:23.0220 +00:00

Из того, что я вижу, current_timestamp не принимает часовой пояс. Более того, время правильное (оно в EST), но я не понимаю, почему смещение неверно.

Любая помощь, чтобы понять это, была бы хорошей.

1 Ответ

0 голосов
/ 07 апреля 2020

Java Timestamp с более или менее работают как LocalDateTime в Java - они не содержат информацию о часовом поясе. И база данных интерпретирует это как метку времени UT C. Вот почему вы получили несоответствие. Я обычно использую два подхода (в зависимости от того, что подходит лучше)

  1. Вы можете вернуть UT C метку времени из Spark (с простым пользовательским UDF) вместо использования current_timestamp, который является указанием часового пояса c.
  2. Вы можете закодировать свои даты в виде строк - аналогично, используя java.time API, вы можете добиться этого с помощью простого udf

Надеюсь, теперь все немного яснее.

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