
Iceberg без Spark для каждой мелочи: UPDATE, DELETE и MERGE INTO из одного SQL-движка в Apache Doris 4.1
shatzibitten 6 минут назад Iceberg без Spark для каждой мелочи: UPDATE, DELETE и MERGE INTO из одного SQL-движка в Apache Doris 4.1 Уровень сложности Средний Время на прочтение 14 мин Охват и читатели 1 Базы данных *...
Anthropic — What company has the best second artificial intelligence model at the end of June?
В сфере искусственного интеллекта произошло заметное событие. shatzibitten 6 минут назад Iceberg без Spark для каждой мелочи: UPDATE, DELETE и MERGE INTO из одного SQL-движка в Apache Doris 4. 1 Уровень сложности Средний Время на прочтение 14 мин Охват и читатели 1 Базы данных * Data Engineering * Big Data * Apache * Хранение данных * Обзор Перевод Автор оригинала: Mingyu Chen (Rayner) Атрибуция: Этот материал является переводом и адаптацией статьи Apache Doris 4. 1 on Iceberg V3: Running the Full Lakehouse Lifecycle from One SQL Engine за авторством Mingyu Chen (Rayner), опубликованной по лицензии CC BY 4.
Адаптация выполнена для русскоязычной аудитории Хабра с дополнительным контекстом по архитектурным компромиссам. Сегодня поговорим про Iceberg V3 и Apache Doris 4. Но не в формате «у нас теперь есть поддержка новой версии формата, хлопаем в ладоши».
Технические детали
Гораздо интереснее другой вопрос: что меняется, когда SQL-движок умеет не только читать Iceberg-таблицу, но и делать маленькие исправления, reconciliation, maintenance и диагностику без отдельного Spark-кластера на каждое телодвижение? Спойлер: Spark никто не отменял. Но есть целый класс ежедневной работы, где переключение движка дороже самой операции.
Если вы когда-нибудь писали Spark job ради исправления одной строки, эта статья может вызвать лёгкие флешбеки. Хотите сразу попробовать? Переходите в Часть 8: Quick Start там путь от нуля до V3-таблицы за пять минут.
Часть 1: 3 часа ночи, одна строка сломана Представим конкретную ситуацию. Data engineer в e-commerce компании сидит в Doris и разбирает Iceberg-таблицу с заказами. Видит, что вчерашний batch из ERP проставил status = 'cancelled' для 200 заказов, которые на самом деле были оплачены — upstream-система отправила кривой snapshot.
Отраслевые последствия
Запрос подтверждает: вот они, 200 строк с неверным статусом. Исправление - банальный WHERE order_id IN (... ) и SET status = 'paid' .
В идеальном мире это выглядит так: UPDATE orders_iceberg SET status = 'paid' WHERE order_id IN (SELECT order_id FROM bad_batch_ids); Что происходит дальше в реальном мире — красиво описано в оригинальной статье Mingyu Chen. Инженер закрывает SQL-клиент и начинает другой рабочий процесс: Пишет Spark job. Подстраивает scheduler.
Чаще всего — передаёт задачу платформенной команде, потому что у него нет прямого доступа к write-кластеру. Утром возвращается в Doris и проверяет, что всё отработало. Полный цикл — 14 часов.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.





