Хранение метки времени ISO-8601 в улье - PullRequest
0 голосов
/ 15 января 2020

STACK -

HDP 3.1.0.0 Hive 3.1.0

Попытка сохранить метки времени, такие как 2020-01-03T02: 46: 21.148 + 02: 00 in ИЛИ C стол ульев.

Хранение меток времени с использованием типа данных меток времени дает NULL при запросах, что ожидается, поскольку куст не соответствует формату, который, как ожидает куст, составляет его метка времени.

Но согласно документации, если мы установим соответствующее свойство serde формата отметки времени, тогда hive сможет читать часовые пояса.

"На уровне таблицы альтернативные форматы отметок времени могут быть поддерживается путем предоставления формата для свойства SerDe «timestamp.formats» (начиная с версии 1.2.0 с HIVE-9298). Например, yyyy-MM-dd'T'HH: mm: ss.SSS, yyyy-MM- dd'T'HH: мм: сс. "

Тем не менее, несмотря на РАЗДЕЛЕНИЯ С ИЗМЕНЕНИЕМ ТАБЛИЦЫ (" timestamp.formats "=" yyyy-MM-dd'T'HH: мм: сс .SSSXXXXX "); свойство, похоже, не имеет никакого эффекта, а куст все еще не может его прочитать. Я пробовал несколько вариантов формата, но ни один не работал.

Создание таблицы в виде текстового файла тоже не помогает.

Для репликации -

Создание таблицы default.test_tz (tt метка времени) хранится как орк; вставить в значения default.test_tz ("2020-01-03T02: 46: 21.148 + 02: 00"), ("2017-02-16T11: 24: 29.000Z"), ("2017-02-16 11:24: 29 "), (" 2019-06-15T15: 43: 19 "); ALTER TABLE default.test_tz SET SERDEPROPERTIES ("timestamp.formats" = "yyyy-MM-dd'T'HH: mm: ss.SSSXXXXX");

Должен ли я просто сохранить его как строку? Какова лучшая практика в таких случаях.

...