Внутреннее устройство Parquet (3D-визуализация)
Mizu
0:00 / 0:00
Внутреннее устройство Parquet (3D-визуализация)
286 просмотров · 2 дня назад
Mizu
456 подписчиков
286 просмотров · 2 дня назад
Что на самом деле находится внутри файла Parquet
Что такое файл Parquet, для чего он используется и что физически находится внутри него, показано на примере реальной таблицы с 100 000 строк: первый и последний байты, группы строк, блоки столбцов и страницы, нижний колонтитул, кодировка словаря, сжатие, как программа чтения пропускает данные, вложенные данные и как Arrow и DuckDB читают файл.
Все числа в этом видео получены из команд, которые мы запускали сами (pyarrow 26.0.0, DuckDB 2.0.0, Python 3.14) на синтетической таблице, или из спецификации Parquet. Результаты представлены в виде соотношений; время выполнения зависит от вашей машины.
Разделы
0:00 Что такое файл Parquet
1:00 Для чего он используется и где
1:45 Преимущества
2:39 Первый и последний байты
3:32 Строки и столбцы
4:38 Анатомия: группы строк, блоки столбцов, страницы
5:22 Одна длинная лента и почему нижний колонтитул идет последним
6:04 Типы и значения NULL
6:51 Поле словаря
7:20 Байты словаря
7:54 Кодировки и сжатие
9:00 Чтение меньшего количества данных: статистика и обрезка
9:52 Индекс страницы и фильтр Блума
10:20 Вложенные данные
11:21 Размер и однократная запись
12:09 Arrow и Parquet
13:01 DuckDB читает Parquet
13:57 Попробуйте сами
14:27 Чего Parquet не делает
Источники
Apache Parquet: https://parquet.apache.org/ и спецификация формата, https://github.com/apache/parquet-format (макет, кодировки, сжатие, индекс страницы, фильтр Блума)
Dremel: Интерактивный анализ веб-масштабных наборов данных (Мельник и др., VLDB 2010), https://research.google/pubs/dremel-i... (уровни повторения и определения)
Объявление ASF о создании Apache Parquet в качестве проекта верхнего уровня, 27 апреля 2015 г.: https://news.apache.org/foundation/en...
Apache Arrow: https://arrow.apache.org/ и документация по чтению Parquet на C++, https://arrow.apache.org/docs/cpp/par...
DuckDB, Чтение и запись файлов Parquet: https://duckdb.org/docs/2.0/data/parq...
Спецификация таблицы Apache Iceberg: https://github.com/apache/iceberg/blo... и протокол Delta Lake: https://github.com/delta-io/delta/blo...
Spark SQL, файлы Parquet: https://spark.apache.org/docs/latest/...
ALP: Afroozeh, Kuffo, Boncz, SIGMOD 2024, https://dl.acm.org/doi/10.1145/3626717
Попробуйте сами: команды, показанные в последних главах, работают с любым файлом Parquet с помощью xxd, tail, pyarrow или DuckDB.