Skip to content
EN

Apache Iceberg

Коротко:

Apache Iceberg — open table format для huge analytic tables. Added ACID transactions, schema evolution, time travel, partitioning flexibility к Parquet/ORC files на S3. Started at Netflix (2018), ASF top-level project. 2024 adoption: Snowflake Iceberg tables, BigQuery, Databricks, AWS S3 Tables native support. Competitor to Delta Lake (Databricks).

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

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

Подробности

  • Metadata layer: tracks data files + partitions + statistics
  • ACID: snapshot isolation, write-audit-publish pattern
  • Schema evolution: add/drop columns без rewriting data
  • Time travel: query as of specific snapshot / timestamp
  • Hidden partitioning: partition by transform (year(ts)), no user impact

Пример

-- Spark + Iceberg
CREATE TABLE prod.db.sales (
  id bigint,
  date date,
  amount decimal(18,2)
) USING iceberg
PARTITIONED BY (month(date));

-- Time travel
SELECT * FROM prod.db.sales
FOR TIMESTAMP AS OF '2026-03-01 00:00:00';

-- Schema evolution
ALTER TABLE prod.db.sales ADD COLUMN region string;

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

Что такое Apache Iceberg?

Apache Iceberg — это формат таблиц для lakehouse-архитектур, который обеспечивает управление большими объемами данных, оптимизацию запросов и поддержку ACID-транзакций. Iceberg позволяет пользователям эффективно работать с данными, хранящимися в облачных хранилищах, таких как Amazon S3 и Google Cloud Storage, и предоставляет возможность обрабатывать данные с помощью различных движков, включая Apache Spark и Presto.

Преимущества использования Apache Iceberg

Apache Iceberg предлагает ряд преимуществ для пользователей, работающих с lakehouse-архитектурами:

  • Гибкость формата: Iceberg поддерживает различные форматы хранения данных, такие как Parquet и ORC, что позволяет пользователям выбирать наиболее подходящий формат для их нужд.
  • Поддержка ACID-транзакций: Iceberg обеспечивает атомарность, согласованность, изолированность и долговечность операций, что критически важно для обработки данных в реальном времени.
  • Оптимизация запросов: Iceberg использует метаданные для оптимизации выполнения запросов, позволяя избегать ненужного сканирования данных и ускоряя обработку запросов.
  • Совместимость с существующими инструментами: Iceberg интегрируется с популярными инструментами для анализа данных, такими как Apache Spark, Apache Flink и Presto, что облегчает внедрение в существующие рабочие процессы.

Практическое применение Apache Iceberg

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

Шаг 1: Установка необходимых зависимостей

Для работы с Iceberg вам потребуется установить необходимые библиотеки. В файле build.sbt добавьте следующие зависимости:

libraryDependencies += "org.apache.iceberg" %% "iceberg-spark3" % "0.13.0"

Шаг 2: Создание таблицы Iceberg

После установки зависимостей можно создать таблицу Iceberg. Используйте следующий код:

import org.apache.iceberg.spark.SparkTableUtil
import org.apache.spark.sql.SparkSession

val spark = SparkSession.builder()
  .appName("IcebergExample")
  .config("spark.sql.extensions", "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions")
  .getOrCreate()

val df = spark.range(0, 1000)
  .toDF("id")

df.write
  .format("iceberg")
  .mode("overwrite")
  .save("my_catalog.db.my_table")

Шаг 3: Запрос данных из таблицы Iceberg

Теперь вы можете выполнять запросы к созданной таблице:

val result = spark.read
  .format("iceberg")
  .load("my_catalog.db.my_table")
result.show()

Таким образом, вы можете легко интегрировать Apache Iceberg в свои процессы обработки данных, используя стандартные инструменты, такие как Apache Spark.

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

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

Iceberg vs Delta Lake?

Iceberg: open (ASF), multi-engine (Spark, Trino, Flink, Snowflake). Delta: Databricks-led, Spark-first. 2025+ convergence (Delta Uniform reads Iceberg).

Query engines?

Apache Spark, Trino, Dremio, Snowflake, Starburst, Presto, DuckDB, AWS Athena, Google BigQuery. Почти все analytic engines 2025+.

Production reliable?

Yes — Netflix PB-scale с 2019. Apple, Expedia, Pinterest, Adobe — все используют. ACID delivered, schema evolution tested в prod.

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

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