У меня есть файл ORC со следующей структурой:
Type: struct<event_ts:timestamp,event_ts_rounded:timestamp>
Первый столбец содержит метки времени с миллисекундами. Второй столбец содержит те же значения меток времени, округленные до полных секунд (без дробной части).
Пример данных:
{"event_ts":"2018-10-08 00:00:00.002","event_ts_rounded":"2018-10-08 00:00:00"}
{"event_ts":"2018-10-08 00:00:00.003","event_ts_rounded":"2018-10-08 00:00:00"}
{"event_ts":"2018-10-08 00:00:00.004","event_ts_rounded":"2018-10-08 00:00:00"}
Orcfiledump отображает следующую информацию о размере потоков:
Stream: column 1 section DATA start: 63802470 length 148475
Stream: column 1 section SECONDARY start: 63950945 length 19840932
Stream: column 2 section DATA start: 83791877 length 148475
Stream: column 2 section SECONDARY start: 83940352 length 761
Размеры потоков данных одинаковы. Это ожидается.
Размер ВТОРОГО потока для метки времени без дробной части крошечный. Это также ожидается.
Но почему значения миллисекунд в ВТОРОМ потоке первого столбца занимают такое огромное количество места? Внутренне это максимум 1000 уникальных значений (от .000 до .999).
Кроме того, в соответствии с документацией ORC, ВТОРИЧНЫЙ поток должен быть оптимизирован для использования как можно меньшего пространства, удаляя конечные нули: https://orc.apache.org/specification/ORCv1/
Я создал файл ORC с версией ORCWriter 1.5.2.
Спасибо.