Проблема производительности с таблицей Impala с объединенными файлами паркета - PullRequest
0 голосов
/ 28 января 2019

Здесь у меня есть утилита python для создания нескольких файлов паркета с использованием библиотеки Pyarrow для одного набора данных, так как размер набора данных огромен за один день.Здесь файл паркета содержит 10K групп строк паркета в каждом файле разделенного паркета, здесь в итоге мы объединяем разделенные файлы в один файл, чтобы создать большой отдельный файл паркета.Здесь я создаю две таблицы Impala с объединенным файлом и несколькими разделенными файлами.

Когда данные разделенного файла загружаются в таблицу Impala и пытаются запросить их, результат приходит быстрее за считанные секунды, но когда таблица Impala создается на одном объединенном паркетефайл.Это даст проблему производительности по сравнению с упомянутой таблицей Impala разделенных файлов.Я не могу определить разницу между этими двумя таблицами, когда пытаюсь вычислить статистику для таблиц Impala.

Любая идея, почему такое различие в производительности между разнородными файлами паркета, таблицей Impala и отдельными объединенными файлами Impalaстол.

1 Ответ

0 голосов
/ 29 января 2019

Исторически хорошие паркетные характеристики ассоциировались с большими паркетными файлами.Однако в действительности хорошая производительность является результатом не больших файлов, а больших групп строк (вплоть до размера блока HDFS).

Размещение групп строк одна за другой без их слияния существенно не изменит производительность Spark,но это сделает Импалу намного медленнее.

Некоторые JIRA в теме:

Вместо объединения небольших файлов Parquet вы можете поместить свежие данные в отдельную таблицу, которая может быть в менее эффективном формате (текстовый файл, Avro или многие другие).небольшие файлы Parquet), а затем используйте Hive, Spark или Impala для запроса содержимого этой таблицы и массово вставьте его в рабочую таблицу.Это создаст файлы Parquet правильного размера с эффективным размером группы строк.

...