Skip to content
EN

Apache Parquet

Коротко:

Apache Parquet — columnar storage format, разработанный Twitter + Cloudera (2013), ASF top-level project. Default формат для analytics на data lake. Benefits: 10-100x compression vs CSV, column pruning (читать только нужные columns), predicate pushdown (фильтр применяется в reader). Write Spark/Pandas/DuckDB, read anywhere.

Ниже: подробности, пример, смежные термины, FAQ.

Проверить свой сайт →

Подробности

  • Columnar: данные хранятся по колонкам, не по rows
  • Compression: Snappy, Gzip, ZSTD, LZ4 per-column
  • Encoding: dictionary, RLE, bit-packing, delta для efficient storage
  • Predicate pushdown: WHERE date > 2026-01-01 уровня reader, не scan
  • Schema embedded в file → self-describing

Пример

# Python (pandas)
import pandas as pd
df = pd.read_csv('sales.csv')
df.to_parquet('sales.parquet', compression='snappy')

# Read only needed columns (column pruning)
df = pd.read_parquet('sales.parquet', columns=['date', 'amount'])

# DuckDB — query parquet directly
duckdb.sql("SELECT SUM(amount) FROM 'sales.parquet' WHERE date > '2026-01-01'")

Смежные термины

Что такое Apache Parquet?

Apache Parquet — это колоночный формат хранения данных, оптимизированный для обработки больших объемов информации. Он позволяет эффективно хранить и обрабатывать данные в распределенных системах, таких как Apache Hadoop и Apache Spark. Parquet поддерживает схемы, что позволяет выполнять оптимизированные запросы и использовать сжатие данных, что значительно сокращает объем хранимой информации.

Преимущества и особенности формата Parquet

Формат Apache Parquet обладает рядом преимуществ, которые делают его идеальным выбором для аналитических задач:

  • Колоночное хранение: Данные хранятся по столбцам, что позволяет быстро считывать только необходимые данные, экономя время и ресурсы.
  • Сжатие: Parquet поддерживает различные алгоритмы сжатия, такие как Snappy, Gzip и LZO, что позволяет значительно уменьшить объем хранимых данных.
  • Поддержка сложных типов: Parquet поддерживает вложенные структуры данных, такие как массивы и карты, что делает его универсальным для различных типов данных.
  • Оптимизация для распределенной обработки: Формат был разработан с учетом распределенных систем, что делает его идеальным для обработки больших данных.

Пример использования Apache Parquet

Рассмотрим практический пример, как создать и использовать файл в формате Parquet с помощью Apache Spark. Для начала необходимо установить Apache Spark и необходимые библиотеки. Затем можно использовать следующий код:

from pyspark.sql import SparkSession

# Создаем SparkSession
spark = SparkSession.builder \
    .appName("Parquet Example") \
    .getOrCreate()

# Создаем DataFrame
data = [(1, 'Alice', 29), (2, 'Bob', 31), (3, 'Cathy', 25)]
columns = ['id', 'name', 'age']
df = spark.createDataFrame(data, columns)

# Сохраняем DataFrame в формате Parquet
output_path = "output/people.parquet"
df.write.parquet(output_path)

# Читаем данные из Parquet
parquet_df = spark.read.parquet(output_path)
parquet_df.show()

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

Что такое Apache Parquet?

Apache Parquet — это колонковый формат хранения данных, который оптимизирован для работы с большими объемами данных в системах обработки и анализа. Он идеален для использования в распределенных вычислительных средах, таких как Apache Hadoop и Apache Spark, благодаря своей способности эффективно сжимать и хранить данные. Формат Parquet поддерживает сложные структуры данных, такие как вложенные объекты и массивы, что делает его подходящим для хранения данных в формате JSON или Avro.

Parquet использует схемы, которые позволяют описывать структуру данных, и поддерживает типы данных, такие как строки, числа, даты и логические значения. Это обеспечивает высокую степень совместимости с различными инструментами для анализа данных, такими как Apache Drill, Apache Impala и Apache Hive.

Как использовать Apache Parquet в практических сценариях

Для работы с Apache Parquet можно использовать различные инструменты и библиотеки. Одним из самых популярных является Apache Spark, который позволяет легко читать и записывать данные в формате Parquet. Ниже приведен пример, как можно использовать Spark для работы с Parquet.

from pyspark.sql import SparkSession

spark = SparkSession.builder \
    .appName('ParquetExample') \
    .getOrCreate()

# Чтение данных из Parquet файла
parquet_file = spark.read.parquet('path/to/your/file.parquet')
parquet_file.show()

# Запись данных в Parquet файл
parquet_file.write.parquet('path/to/save/file.parquet')

В этом примере мы сначала создаем экземпляр SparkSession, который является точкой входа для работы со Spark. Затем мы читаем данные из существующего Parquet файла и выводим их на экран. Наконец, мы записываем данные обратно в новый Parquet файл.

Формат Parquet обеспечивает эффективное сжатие данных, что позволяет значительно снизить объем хранимой информации. Например, при использовании алгоритма сжатия Snappy, вы можете ожидать уменьшение размера данных до 50-80% по сравнению с исходным размером. Это особенно полезно при работе с большими наборами данных, которые требуют много места для хранения.

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

Для настройки Parquet в вашем проекте вы можете использовать такие параметры, как:

  • compression: Устанавливает алгоритм сжатия, например, 'snappy', 'gzip' или 'lzo'.
  • mergeSchema: Позволяет объединять схемы, если они различаются в разных файлах.
  • mode: Устанавливает режим записи, например, 'overwrite' или 'append'.

Пример настройки записи в Parquet с использованием Spark:

parquet_file.write.mode('overwrite') \
    .option('compression', 'snappy') \
    .parquet('path/to/save/file.parquet')

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

Больше по теме

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

Parquet vs CSV?

CSV: human-readable, row-oriented, no schema, no compression. Parquet: binary, columnar, schema embedded, 10-100x smaller. Для analytics всегда Parquet.

Parquet vs ORC?

Similar columnar formats. ORC: Hive ecosystem history, better indexing. Parquet: broader adoption (Spark default). 2026 — Parquet wins.

Size typical?

CSV 1 GB → Parquet 50-200 MB с Snappy compression (5-20x). ZSTD даёт 2-3x лучше но CPU-cost.

Запустить инструмент, который описан в этой статье

Бесплатный тариф — 10 мониторов, проверки каждые 5 мин, без карты. Платные тарифы — интервал от 1 минуты и проверки из нескольких регионов.