Super Sale WeekClaude Skills — 20% OFF
Glossary

Освоение файлов Parquet: структура, сценарии использования и ключевые преимущества

Powerdrill Bloom·
Освоение файлов Parquet: структура, сценарии использования и ключевые преимущества

В файлах Parquet данные хранятся по колонкам, а не по строкам. Проект Apache Parquet описывает его как «формат файлов данных с открытым исходным кодом, ориентированный на колонки и разработанный для эффективного хранения и извлечения данных». Это одно конструктивное решение объясняет, почему он меньше по размеру, быстрее обрабатывает запросы и сложнее открывается двойным кликом.

Что такое файл Parquet?

Parquet — это формат файлов для табличных данных, поддерживаемый в рамках проекта Apache. В официальной документации указано, что он «обеспечивает высокопроизводительные схемы сжатия и кодирования для обработки больших объемов сложных данных». Там также добавляется, что этот формат «поддерживается во многих языках программирования и аналитических инструментах».

Определяющим свойством является ориентация. В CSV запись идет построчно: сначала все поля первой записи, затем все поля второй. Parquet записывает данные поколоночно: сначала все значения первой колонки, затем все значения второй.

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

Формат официально специфицирован. В документации Apache отмечается, что «в репозитории parquet-format размещена официальная спецификация формата файлов Parquet, определяющая структуру и способ хранения данных».

Как устроен файл Parquet

Конверт

Каждый файл Parquet начинается и заканчивается одними и теми же четырьмя байтами. Спецификация указывает на «4-байтовое магическое число 'PAR1'» в начале и такое же магическое число в самом конце.

Между ними располагаются данные, а ближе к концу — метаданные. Прямо перед закрывающим магическим числом находится «4-байтовая длина метаданных файла в байтах (little endian)». Это значение указывает программе чтения, на сколько байт назад нужно вернуться, чтобы найти блок метаданных.

Группы строк и фрагменты колонок

Внутри конверта данные делятся дважды. Спецификация описывает файл как таблицу с «N колонок, разделенную на M групп строк».

Группа строк — это горизонтальный срез, то есть пакет строк. Внутри каждой группы строк значения каждой колонки хранятся вместе в виде фрагмента колонки. Таким образом, файл с 90 колонками и 10 группами строк содержит 900 фрагментов колонок, каждый из которых представляет собой непрерывную последовательность значений из одной колонки.

Именно это двойное разделение делает возможным выборочное чтение. Запрос может пропускать целые группы строк, которые не могут содержать подходящие строки, а затем читать только нужные фрагменты колонок из оставшихся групп.

Почему метаданные находятся в конце

Это удивляет тех, кто ожидает увидеть заголовок в начале. Документация Apache напрямую объясняет причину: «метаданные файла записываются после данных, чтобы обеспечить однопроходную запись».

Программа, записывающая большой набор данных в виде потока, не знает конечные байтовые позиции каждого фрагмента, пока не запишет их все. Размещение метаданных в конце избавляет от необходимости возвращаться назад и корректировать заголовок.

Из этого вытекает и логика чтения. Согласно документации, метаданные файла «содержат начальные адреса всех фрагментов колонок». Там также добавляется, что «программы чтения должны сначала прочитать метаданные файла, чтобы найти все интересующие их фрагменты колонок».

Для чего используется Parquet

Обычно вы сталкиваетесь с файлом .parquet в одной из четырех ситуаций.

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

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

Передача данных между командами. Инженер данных, отправляющий вам транзакции за год, скорее выберет этот формат, а не CSV, который был бы в несколько раз больше.

Обмен данными между аналитическими инструментами. Поскольку формат поддерживается множеством языков и инструментов, он передается между системами без промежуточного этапа конвертации.

Общим связующим фактором является размер. Этот формат становится очевидным выбором в тот момент, когда передавать CSV становится неудобно.

Parquet vs CSV

Parquet CSV
Ориентация Ориентирован на колонки Ориентирован на строки
Читается в текстовом редакторе Нет, он бинарный Да
Типичный размер файла Меньше благодаря сжатию колонок Больше для тех же данных
Чтение нескольких колонок Читает только нужные фрагменты колонок Читает весь файл
Типы данных Переносятся в метаданных файла Определяются программой, которая его открывает
Открывается двойным кликом Обычно нет Обычно открывается в табличном процессоре
Лучше всего подходит для Больших таблиц, частых запросов Небольших таблиц, быстрого просмотра, универсального обмена

Поведение типов заслуживает отдельного упоминания. CSV не знает, является ли значение 00123 числом или строкой, из-за чего ведущие нули и даты часто искажаются при импорте. Parquet записывает типы в свои метаданные, поэтому вы считываете ровно то значение, которое записали.

Что касается строковой стороны этого сравнения, в руководстве по CSV эта же тема рассматривается с другой стороны. А в разборе TSV описывается вариант с разделением табуляцией.

Ключевые преимущества

Сжатие, которое действительно усиливается. Хранение похожих значений рядом друг с другом дает кодировщику гораздо больше возможностей. Документация Apache объясняет это «высокопроизводительными схемами сжатия и кодирования».

Отсечение колонок. Чтение трех колонок из девяноста требует операций ввода-вывода примерно для трех колонок, а не для всех девяноста.

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

Типы данных сохраняются при передаче. Даты остаются датами, а идентификаторы сохраняют свои ведущие нули, поскольку схема данных передается внутри самого файла.

Однопроходная запись. Расположение метаданных в конце позволяет записывать файлы очень большого размера в виде потока.

Широкая поддержка. В документации отмечается поддержка во «многих языках программирования и аналитических инструментах», поэтому вы вряд ли зайдете в тупик.

Где Parquet перестает помогать

Parquet решает задачи хранения и извлечения данных. Но он не отвечает на вопросы о том, что именно содержится в файле.

Он бинарный, поэтому на него нельзя просто взглянуть. Чтобы открыть CSV и проверить, является ли колонка выручки валовой или чистой, требуется пять секунд. Для просмотра бинарного файла сначала понадобится специальный инструмент.

Он также плохо подходит для небольших объемов данных. Для справочной таблицы из 200 строк избыточность метаданных и требования к инструментам перевешивают любую выгоду от сжатия. В таких случаях CSV будет лучшим форматом, и признание этого — часть правильного использования Parquet.

И он ничего не говорит о качестве. Файл может содержать идеально типизированную, эффективно сжатую бессмыслицу. Дублирующиеся записи, колонку валюты со смешением двух разных валют, идентификатор клиента, схема которого изменилась в марте. Формат гарантирует точность передачи данных, а не их корректность.

Как работать с файлом Parquet, если вы не инженер

В этом заключается практический разрыв. Большинство бизнес-инструментов рассчитаны на электронные таблицы, и файл .parquet не откроется так же просто, как CSV.

Прагматичный путь — это этап конвертации. Попросите того, кто создал файл, сделать выгрузку в CSV или Excel только для тех колонок, которые вам действительно нужны, либо конвертируйте его самостоятельно с помощью любого инструмента, поддерживающего Parquet. Вы потеряете преимущества сжатия, но это не имеет значения, когда данные уже находятся на вашем компьютере и их объем сокращен.

Дальнейшая работа представляет собой обычный анализ. На странице тарифов Powerdrill Bloom указана возможность загрузки файлов Excel, CSV, PDF и документов, поэтому конвертированная выгрузка загружается напрямую. Вопросы задаются на естественном языке, а не пишутся в виде запросов. CSV AI assistant поддерживает этот сценарий, а data connectors подходят для случаев, когда данные лучше запрашивать напрямую, а не экспортировать.

Важно понимать различие: использование Parquet — это решение по хранению данных, принятое до того, как они попали к вам. Это не инструмент для анализа, и отказ от него в пользу другого формата, как только файл оказывается на вашем столе, является нормальной практикой, а не просто обходным путем.

Заключение

Parquet — это ориентированное на колонки хранилище, схема и индекс которого находятся в конце файла. Такое конструктивное решение обеспечивает сжатие, выборочное чтение и надежные типы данных, благодаря чему этот формат стал стандартом по умолчанию для любых больших объемов данных.

Но чего он не дает, так это наглядности. Как только файл попадает к человеку, которому нужны ответы, а не просто хранение, наиболее полезным следующим шагом обычно становится создание ограниченной выгрузки и формулирование вопроса.

Если вы находитесь именно на этом этапе, попробуйте Powerdrill Bloom с конвертированным файлом и начните с того, чтобы превратить его в диаграмму.

Часто задаваемые вопросы

Для чего используется файл Parquet?

Parquet используется для эффективного хранения больших табличных наборов данных. Он часто применяется для экспорта из хранилищ данных, хранения в озерах данных, передачи между командами и обмена между аналитическими инструментами. Причина в том, что он отлично сжимается и поддерживает чтение только выбранных колонок.

Parquet лучше, чем CSV?

Для больших таблиц, к которым часто выполняются запросы, — да: он меньше по размеру, сохраняет типы данных и поддерживает отсечение колонок. Для небольших таблиц, которые нужно просмотреть или отправить коллегам, проще использовать CSV, так как это текстовый формат, который открывается где угодно.

Можно ли открыть файл Parquet в Excel?

Двойным кликом открыть его не получится, так как Parquet — это бинарный формат, а не текстовый. Обычно его сначала конвертируют в CSV или Excel либо используют инструмент, который умеет читать Parquet напрямую.

Почему метаданные Parquet хранятся в конце файла?

Документация Apache объясняет, что метаданные записываются после данных, «чтобы обеспечить однопроходную запись». Программа, записывающая большой набор данных в виде потока, не знает заранее конечные позиции фрагментов, поэтому запись метаданных в конце избавляет от необходимости возвращаться к заголовку.

Что такое группы строк в Parquet?

Группа строк — это горизонтальный срез таблицы. Спецификация описывает колонки файла как «разделенные на M групп строк», при этом каждая колонка хранится в виде отдельного фрагмента внутри каждой группы. Такая структура позволяет программам чтения пропускать как ненужные группы, так и ненужные колонки.