Как я могу получить тот же результат, что и Hives from_unixtime в Impala? - PullRequest
0 голосов
/ 14 февраля 2020

Я понимаю, что Imapla интерпретирует временные метки относительно часового пояса UT C. Я также знаю, что есть настройка, в которой это поведение можно изменить, чтобы импала интерпретировала временные метки относительно местного часового пояса. Проблема в том, что я не могу изменить эту настройку.

Есть ли способ получить тот же результат, что и в Hive в Impala? Вот результат Hive:

select from_unixtime(1521938294)
--> 2018-03-25 01:38:14

Местный часовой пояс Europe/Vienna

1 Ответ

1 голос
/ 15 февраля 2020

Отличный вопрос. Но ответ хитрый! Я изучал это некоторое время, и ниже мой ответ.

  1. Выбранные вами дата и время указывают на время, когда сдвиг времени происходит для Вены. время сдвигается вперед на один час.

Вы можете проверить это, используя ссылки ниже.

ЗДЕСЬ1

* 1014 здесь 2 *

Что касается преобразования времени в Impala без использования необходимых флагов, синтаксис будет выглядеть следующим образом:
select from_utc_timestamp(cast(from_unixtime(1521938294) AS TIMESTAMP), 'Europe/Vienna');
[OR]
select from_utc_timestamp('2018-03-25 00:38:14', 'Europe/Vienna');

2018-03-25 01:38:00   <---EXPECTED OUTPUT
2018-03-25 02:38:00   <---ACTUAL OUTPUT IN IMPALA

Приведенный выше синтаксис выполняет преобразование отметки времени Unix. в европейское / венское время, однако есть разница в разнице в один час в результате, как показано выше, из-за разницы между временным сдвигом, который происходит в реальной жизни, и преобразованием, которое происходит в Импале.

Причина:

Сдвиг времени в реальной жизни - 25 марта 2019 г. 01: 59: 59 , а затем 25 марта 2019 г. 03: 00: 00

Сдвиг времени в Импале - 25 марта 2019 г. 00: 59: 59 , а затем 25 марта 2019 г. 02: 00: 00

Несмотря на то, что в Impala, похоже, есть проблема с конверсией, приведенный выше синтаксис должен работать безупречно для любых дат в 2018 году, кроме 25 марта.

Для других дат:

select from_utc_timestamp('2018-03-26 00:38:14', 'Europe/Vienna')

2018-03-26 02:38:14   <---ACTUAL & CORRECT OUTPUT IN IMPALA 

Надеюсь, это поможет!

...