Контекст:
- У меня есть два идентичных набора данных (скажем, левый и правый) со 112 файлами паркета в каждом наборе данных.
- Эти файлы паркета были созданы с использованием Hive, путем преобразования плоских файлов с разделителями.
- Процесс, используемый для создания файлов плоских файлов с разделителями, немного отличается для левого и правого процессов.
- Я заметил существенную разницу в размере между обоими наборами данных, даже если содержимое в них точно одни и те же. Левый набор данных составляет 400 ГБ, а правый набор данных - 420 ГБ.
- Когда я проверил схему Parquet с помощью инструментов паркет, я заметил, что для левого и правого наборов данных использовалась различная кодировка, как показано (для одного столбца) ниже:
Слева:
column_a: INT64 SNAPPY DO:0 FPO:4 SZ:5179987/6161135/1.19 VC:770100 ENC:PLAIN,RLE,BIT_PACKED
Справа:
column_a: INT64 SNAPPY DO:0 FPO:4 SZ:3040269/5671813/1.87 VC:782499 ENC:BIT_PACKED,PLAIN,RLE,PLAIN_DICTIONARY
Мой вопрос:
Как паркет определяет, какой тип кодировки использовать и что могло заставить паркет выбирать другую кодировку? Это то, что мы можем контролировать с помощью конфигурации Hive / Spark?