Step 2 of 3

Про формат Parquet

Вам, как дата инженеру, предстоит неоднократно столкнуться с различными форматами файлов. Хранить данные открытым текстом дорого и неэффективно. Дорого потому что объём больше (а в S3 плата взымается в том числе за размер файла), а неэффективно потому что для того, чтобы найти в нём нужную информацию, его надо прочитать целиком (не говоря уже о времени передачи по сети). Умные головы за нас решили эту проблему, поэтому существует множество эффективных способов хранить и читать данные.

Apache Parquet — это бинарный формат колоночного хранения данных в сжатом виде (есть ряд поддерживаемых алгоритмов сжатия, включая lzo, gzip, snappy и т.д.). Идеально подходит для представления табличных данных. Parquet-файл можно представить в виде базы данных с одной таблицей. Преимущество этого формата в эффективной компрессии файла за счёт колоночного хранения (строка по сути содержит все данные одной конкретной колонки), а также в эффективном чтении. В аналитических запросах редко присутствуют выборки всех колонок сразу, обычно читают лишь часть. Если не вдаваться в детали реализации Parquet, а попробовать объяснить представление данных внутри максимально просто, то Parquet выглядит как небольшая файловая система, где значения каждой колонки лежат в отдельных файлах, а также присутствует дополнительный файл с метаданными, где хранится информация о типах колонок и их расположении. То есть чтобы получить значения заданных колонок нужно прочитать только файлы, содержащие данные этих колонок (а не всё целиком). Надеюсь у меня получилось внятно объяснить. Подробную информацию можно найти на официальном сайте Apache Parquet. Также рекомендую взглянуть на наглядное сравнение между Parquet и CSV в скорости обработки и стоимости.

Comments

https://databricks.com/glossary/what-is-parquet отдаёт 404, возможно имеет смысл заменить ссылку