Как работает CDC pipeline?
🌐 В современных дата-платформах данные редко грузят батчами раз в сутки.
Чаще используют CDC (Change Data Capture) — потоковое получение всех изменений из базы.
Разберём классический пайплайн:
MySQL → Debezium → Kafka → ClickHouse
1️⃣ В MySQL все изменения пишутся в binlog (binary log) - по сути журнал транзакций базы.
Каждая операция фиксируется как событие: INSERT,UPDATE,DELETE
2️⃣ Debezium — это CDC-коннектор (обычно работает через Kafka Connect)
Он:
➡️ подключается к MySQL
➡️ читает binlog
➡️ превращает события в Kafka messages
➡️ пишет события в Kafka топики
3️⃣ Kafka: транспортный слой между OLTP и аналитикой которая позволяет довольно продолжительное время накапливать историю
4️⃣ Далее все направляется в ClickHouse: аналитическое хранилище
Он читает Kafka через Kafka Engine или ingestion сервис.
Выглядит это примерно так:
Kafka topic
↓
Kafka Engine Table
↓
Materialized View
↓
MergeTree таблица
🧐 Почему такая архитектура стала стандартом
Она даёт:
➡️ Near real-time данные
➡️ минимальную нагрузку на OLTP
➡️ возможность replay истории
➡️ масштабируемость
Было полезно? Ставьте 🔥
#dataengineering #cdc #debezium #kafka
Чаще используют CDC (Change Data Capture) — потоковое получение всех изменений из базы.
Разберём классический пайплайн:
MySQL → Debezium → Kafka → ClickHouse
Каждая операция фиксируется как событие: INSERT,UPDATE,DELETE
Он:
Он читает Kafka через Kafka Engine или ingestion сервис.
Выглядит это примерно так:
Kafka topic
↓
Kafka Engine Table
↓
Materialized View
↓
MergeTree таблица
Она даёт:
Было полезно? Ставьте 🔥
#dataengineering #cdc #debezium #kafka
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥38⚡6💯3❤2
Я — Артём Подвальный. Помогаю разобраться в работе инструментов обработки больших данных и как происходят эти процессы в компаниях. Здесь я стараюсь простым языком объяснить самое важное что надо знать начинающему DE и получить заветный оффер.
Самое полезное, что уже можно найти в канале:
Легендарный Roadmap для DE. Проверь, всё ли из этого ты знаешь
Давай общаться!
Задавай вопросы в комментариях к любому посту или пиши мне лично: @ampodvalniy.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7❤5🏆5🤨2
Channel name was changed to «Дата Инженер Лаб | Артём Подвальный»
Давайте разберем такую ситаацию: твой пайплайн упал и данные за последние 3 часа «испарились», а восстановить их не из чего 💀
Если у тебя стоит RabbitMQ — это реальный сценарий. Если Kafka то проблема может решится парой команд в консоли. Так почему же один брокер будет прощать ошибки, а другой — нет? Разбирем фундаментальную разницу между Smart Broker и Dumb Broker, чтобы вы больше никогда их не путали.
Главное различие — в «интеллекте» системы:
🔘 RabbitMQ (Smart Broker): Брокер сам следит за состоянием очередей, маршрутизирует сообщения и удаляет их сразу после подтверждения (ack). Это модель Push: брокер сам «толкает» данные потребителю. Это упрощает код клиента, но нагружает систему при росте данных.
🔘 Kafka (Dumb Broker): Это распределенная платформа потоковой передачи, работающая как распределенный коммит-лог. Она просто записывает данные и хранит их. Здесь работает модель Pull: потребители сами запрашивают данные, когда готовы их обработать.
👀 Почему для Data Engineering почти всегда нужна Kafka?
🔛 Гипер-масштабируемость: Кафка переваривает миллионы сообщений в секунду. Секрет в партиционировании (partitions): топики делятся на части и распределяются между брокерами. Это позволяет распараллеливать чтение и запись на петабайтах данных. Мы упоминали это, когда разбирали современный Lakehouse.
🔛 Постоянство данных (Retention Policy): Сообщения не удаляются после прочтения. Они хранятся по времени или объему. Это позволяет нескольким потребителям читать одни и те же данные в разное время.
🔛 Replayability (Повтор): Если в пайплайне баг, ты просто перечитываешь данные заново. В RabbitMQ «съеденное» сообщение пропадает навсегда.
🔛 Гарантии Exactly-once: Кафка умеет доставлять сообщение «ровно один раз», что критично для финансов. Рэббит обычно гарантирует только «хотя бы один раз».
🐰 Когда RabbitMQ — это НЕ ошибка?
🔘 Сложная маршрутизация: Если нужно раскидывать задачи по куче условий (exchanges: direct, fanout, topic, headers). Кафка в базе так не умеет.
🔘 Приоритеты: В RabbitMQ можно пометить сообщение как высокоприоритетное, и оно проскочит очередь. В Кафке порядок строго хронологический внутри партиции.
🔘 Низкая задержка на малых данных: При небольших объемах Рэббит может быть быстрее, но при росте нагрузки его задержки растут лавинообразно.
Итого:
Если ты строишь Data Lake, систему аналитики или ETL-пайплайны — твой выбор Kafka. Она идеально ложится в архитектуру Data Vault, сохраняя историю без потерь.
RabbitMQ оставляем для микросервисов и простых очередей (например, фоновая отправка писем).
🔖 Что почитать по теме: https://habr.com/ru/companies/slurm/articles/666326/
❓ Вопрос к тем, кто учится:
👇
#Kafka #RabbitMQ #DataEngineering #ITCareer #CareerDE #DataScience
Если у тебя стоит RabbitMQ — это реальный сценарий. Если Kafka то проблема может решится парой команд в консоли. Так почему же один брокер будет прощать ошибки, а другой — нет? Разбирем фундаментальную разницу между Smart Broker и Dumb Broker, чтобы вы больше никогда их не путали.
Главное различие — в «интеллекте» системы:
Итого:
Если ты строишь Data Lake, систему аналитики или ETL-пайплайны — твой выбор Kafka. Она идеально ложится в архитектуру Data Vault, сохраняя историю без потерь.
RabbitMQ оставляем для микросервисов и простых очередей (например, фоновая отправка писем).
Представь, что тебе нужно собирать логи со 100 серверов и сохранять их в базу для аналитики. Что выберешь после этого поста и почему?Пиши в комментариях, обсудим!
#Kafka #RabbitMQ #DataEngineering #ITCareer #CareerDE #DataScience
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👏4💯3❤1👍1
Вопрос по которому часто возникают трудности у кандидатов😐
«Как вы боретесь с дублями в Kafka на проде?». Напиши свой ответ в комментариях и сравнивай:
Ответ: "Три уровня защиты. Producer: enable.idempotence=true — закрывает сетевые ретраи. Consumer: проверяю event_id в Postgres перед обработкой. Транзакции — только для read-process-write между топиками Kafka. Главное правило: check → process → commit offset."
Совпало? Теперь разберем по полочкам, почему это важно:👇
Почему дубли вообще есть?
🔵 Настройка продюсера
Кафка выдает тебе Producer ID (PID) и заставляет нумеровать сообщения. Если брокер видит сообщение с номером, который уже был - он его просто выкидывает.
Настройка: enable.idempotence=true.
Почти не влияет на скорость. Включай всегда по умолчанию.
🔵 Транзакции
Объединяет чтение и запись в одну неделимую операцию (Read-Process-Write). Если что-то упало - вся цепочка откатится, и дублей в конечном топике не будет.
Настройка: transactional.id + isolation.level=read_committed.
Добавляет задержку (latency). Используй только там, где критичен идеальный порядок.
🔵 Идемпотентность консьюмера
Кафка не знает, что в твоей базе. Если сервис записал данные, но «упал» до фиксации оффсета - кафка пришлет дубль. Поэтому проверяй уникальность ключа на входе в базу.
Пример: INSERT ... ON CONFLICT DO NOTHING в Postgres или SET NX в Redis.
Самый надежный способ, который спасет, даже если настройки кафки не помогли.
🤔 Какой следующий вопрос разобрать?
#Kafka #DataEngineering #ITCareer #CareerDE #DataScience
«Как вы боретесь с дублями в Kafka на проде?». Напиши свой ответ в комментариях и сравнивай:
Совпало? Теперь разберем по полочкам, почему это важно:
Почему дубли вообще есть?
Как это можно решить:1️⃣ Producer retry
Producer отправил сообщение → брокер не ответил → producer отправил СНОВА
Kafka получила 2 одинаковых сообщения2️⃣ Consumer crash
Consumer прочитал сообщение → начал обработку → УПАЛ
При рестарте читает то же сообщение СНОВА3️⃣ Rebalance группы (80% проблем на проде!)
Consumer A обработал партицию → Consumer B взял её → обработал СНОВА
Кафка выдает тебе Producer ID (PID) и заставляет нумеровать сообщения. Если брокер видит сообщение с номером, который уже был - он его просто выкидывает.
Настройка: enable.idempotence=true.
Почти не влияет на скорость. Включай всегда по умолчанию.
Объединяет чтение и запись в одну неделимую операцию (Read-Process-Write). Если что-то упало - вся цепочка откатится, и дублей в конечном топике не будет.
Настройка: transactional.id + isolation.level=read_committed.
Добавляет задержку (latency). Используй только там, где критичен идеальный порядок.
Кафка не знает, что в твоей базе. Если сервис записал данные, но «упал» до фиксации оффсета - кафка пришлет дубль. Поэтому проверяй уникальность ключа на входе в базу.
Пример: INSERT ... ON CONFLICT DO NOTHING в Postgres или SET NX в Redis.
Самый надежный способ, который спасет, даже если настройки кафки не помогли.
#Kafka #DataEngineering #ITCareer #CareerDE #DataScience
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7💯7❤3👍3🤔3👀1
Страшно начинать с нуля 😱
Это первая мысль, когда решаешь уйти из другой сферы или только заканчиваешь универ…
📌 Но вот в чём штука — ты и не начинаешь с нуля
Ноль — это когда нет ничего. А у тебя есть: годы учёбы или работы, насмотренность, понимание того, как устроены процессы, люди, системы. Это не обнуляется от того, что ты открыл первый туториал по Python⚠️
Именно прошлый опыт часто становится скрытым преимуществом:
Умение структурировать хаос🌪
Пайплайны, зависимости, ошибки, потоки данных — это управляемый хаос. Если умел наводить порядок в процессах, документах или хотя бы в своих курсовых — здесь будет понятна логика.
Коммуникация
DE — это не только код. Объяснить аналитику, почему данные «поехали», согласовать с бизнесом приоритеты — это добрая половина работы🍻
Проектное мышление🖥
Привычка доводить задачи до конца, держать сроки и не теряться в приоритетах — это видно сразу и ценится высоко.
Внимание к «скучным» деталям
Бухгалтерия, документирование процессов, контроль качества — там, где без проверок нельзя. Этот «занудный» навык в DE превращается в суперсилу👀
Гибкость в освоении нового
Если ты уже менял роли или сферы, твой мозг умеет перестраиваться. Новый стек, новая терминология уже не шок🧑💻
Опыт работы с документацией
Умеешь читать инструкции, регламенты, стандарты? Значит, разобраться в API, логах и метриках — вопрос времени, а не способностей.
🏫 А если ты только из универа?
Учился на экономиста, биолога, физика, юриста — неважно. Ты уже умеешь разбираться в сложных системах, работать с большим объёмом информации и доводить задачи до результата под дедлайн. Это и есть база, на которую ляжет DE.
📱 SQL, Python, облака и оркестрацию выучить можно. А умение не паниковать, когда всё горит, чувствовать бизнес и структурировать хаос — это приходит с опытом, который у тебя уже есть
Если сейчас стоишь перед этим шагом и не знаешь, с чего начать — пиши в личку @ampodvalniy👋
Расскажешь про свой
бэкграунд, разберём вместе: что уже есть, что нужно подтянуть и как выстроить путь без хаоса👍
Это первая мысль, когда решаешь уйти из другой сферы или только заканчиваешь универ…
Ноль — это когда нет ничего. А у тебя есть: годы учёбы или работы, насмотренность, понимание того, как устроены процессы, люди, системы. Это не обнуляется от того, что ты открыл первый туториал по Python
Именно прошлый опыт часто становится скрытым преимуществом:
Умение структурировать хаос🌪
Пайплайны, зависимости, ошибки, потоки данных — это управляемый хаос. Если умел наводить порядок в процессах, документах или хотя бы в своих курсовых — здесь будет понятна логика.
Коммуникация
DE — это не только код. Объяснить аналитику, почему данные «поехали», согласовать с бизнесом приоритеты — это добрая половина работы
Проектное мышление
Привычка доводить задачи до конца, держать сроки и не теряться в приоритетах — это видно сразу и ценится высоко.
Внимание к «скучным» деталям
Бухгалтерия, документирование процессов, контроль качества — там, где без проверок нельзя. Этот «занудный» навык в DE превращается в суперсилу
Гибкость в освоении нового
Если ты уже менял роли или сферы, твой мозг умеет перестраиваться. Новый стек, новая терминология уже не шок
Опыт работы с документацией
Умеешь читать инструкции, регламенты, стандарты? Значит, разобраться в API, логах и метриках — вопрос времени, а не способностей.
Учился на экономиста, биолога, физика, юриста — неважно. Ты уже умеешь разбираться в сложных системах, работать с большим объёмом информации и доводить задачи до результата под дедлайн. Это и есть база, на которую ляжет DE.
Твой опыт, абсолютно любой — это актив. Его стоит ценить и использовать!
Если сейчас стоишь перед этим шагом и не знаешь, с чего начать — пиши в личку @ampodvalniy
Расскажешь про свой
бэкграунд, разберём вместе: что уже есть, что нужно подтянуть и как выстроить путь без хаоса
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👏7🥰4👀3❤1🤔1🤨1
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰6🔥4👏4
Что чаще всего подводит? 💻
Anonymous Poll
14%
Сломанный JOIN с событиями
6%
Неправильный grain по сессиям
59%
Повторная загрузка одних и тех же данных (отсутствует идемпотентность)
21%
Забыли сделать DISTINCT по user_id
❤6🤔6👀5
Правильный ответ:
Повторная загрузка одних и тех же данных (отсутствие идемпотентности) 🔁
Почему это происходит?
Инкрементальная загрузка - это когда мы не перекачиваем все данные заново, а только добавляем свежие кусочки (например, за вчерашний день)🧩 Но иногда случаются сбои: процесс может упасть на середине или его могут запустить дважды по ошибке ⚠️
В чем косяк♠️ ?
Если твой процесс просто «дописывает» данные (Append) и не проверяет, были ли они загружены ранее, то при повторном запуске он добавит те же самые строки еще раз. Это называется отсутствием идемпотентности 🙅♂️ В итоге количество пользователей (DAU) в базе вырастет, но это будут не новые люди, а «клоны» старых.
Как исправить?
Вместо простого добавления использовать стратегию MERGE (обновить, если есть, или вставить, если нет) или INSERT OVERWRITE (сначала удалить старые данные за этот день, а потом записать новые) ✔️
Почему это происходит?
Инкрементальная загрузка - это когда мы не перекачиваем все данные заново, а только добавляем свежие кусочки (например, за вчерашний день)
В чем косяк
Если твой процесс просто «дописывает» данные (Append) и не проверяет, были ли они загружены ранее, то при повторном запуске он добавит те же самые строки еще раз. Это называется отсутствием идемпотентности
Как исправить?
Вместо простого добавления использовать стратегию MERGE (обновить, если есть, или вставить, если нет) или INSERT OVERWRITE (сначала удалить старые данные за этот день, а потом записать новые)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👀4✍2❤1😁1🤔1
Ребята, давно хотел обновить свой роадмап по Data Engineering - и вот наконец сделал. Кстати, на канале появилось много новеньких - привет всем, кто только подписался, вы тут вовремя появились👋
Переписал роадмап под реалии 2026: убрал лишнее, добавил актуальные инструменты, прикрепил ссылки на материалы и вилки по каждому грейду. Получилось объёмно, но по делу.
Если заходите в профессию или думаете куда расти📈
-> ЧИТАЕМ ТУТ
P.S. Буду благодарен за комментарии и лайки, хотелось бы продвинуть статью😋
Переписал роадмап под реалии 2026: убрал лишнее, добавил актуальные инструменты, прикрепил ссылки на материалы и вилки по каждому грейду. Получилось объёмно, но по делу.
Если заходите в профессию или думаете куда расти
-> ЧИТАЕМ ТУТ
P.S. Буду благодарен за комментарии и лайки, хотелось бы продвинуть статью
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥11👏5🤨5👍4🤔3👀2
В понедельник приходит отчёт: продажи за выходные выросли на 35% по сравнению с прошлой неделей, аналитики в шоке от "успеха"😃 Ты копаешь код и ищешь косяк…
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
🔍Где он прячется?
Anonymous Poll
12%
Использование JEFT JOIN вместо INNER
57%
Разная детализация (grain) таблиц при JOIN (строки размножились)
23%
Дубли после GROUP BY
8%
DISTINCT на всю сумму
❤5🤔5🔥3
Правильный ответ:
Разный grain (считают по заказам, а агрегируют по позициям — строки размножаются) 🔄
Почему это происходит?
Представь, что у тебя есть таблица «Заказы» (где 1 заказ = 1 строка) и таблица «Товары в заказе» (где 1 товар = 1 строка)📦 Если в одном заказе купили 3 разных товара, то при объединении (JOIN) этих таблиц одна строка заказа «размножится» на три
В чем косяк? Если ты начнешь считать сумму продаж по такой «раздутой» таблице, SQL сложит сумму одного и того же заказа трижды 🥲 В итоге в отчете цифры будут гораздо выше реальных (тот самый «взрыв дублей»), хотя на самом деле продаж больше не стало 📉
Как исправить? Нужно сначала «схлопнуть» (агрегировать) данные о товарах до уровня заказа и только потом делать JOIN☑️
Почему это происходит?
Представь, что у тебя есть таблица «Заказы» (где 1 заказ = 1 строка) и таблица «Товары в заказе» (где 1 товар = 1 строка)
В чем косяк? Если ты начнешь считать сумму продаж по такой «раздутой» таблице, SQL сложит сумму одного и того же заказа трижды
Как исправить? Нужно сначала «схлопнуть» (агрегировать) данные о товарах до уровня заказа и только потом делать JOIN
Please open Telegram to view this post
VIEW IN TELEGRAM
🏆7🤯5👏4
Снова увидел S3 в требованиях? Давай раз и навсегда разберёмся
🤔 Часто в вакансиях вижу S3. Решил напомнить (или рассказать тем, кто не знает) - что это вообще такое 👇
S3 (Amazon Simple Storage Service) - если совсем просто, это «бездонная бочка». Гигантский виртуальный склад. Кидаешь туда файл любого типа и размера - и не думаешь, что место кончится.
Как оно устроено?
В отличие от компбютера(файловой системы) где файлы лежат в папках, тут всё плоское. Без иерархий. Вот три основных понятия, которые надо знать:
🪨 Объект - сам файл. Картинка, видео, документ, лог. У него есть:
🔘 сами данные
🔘 метаданные (размер, тип и прочее)
🔘 ключ - уникальный адрес, по которому его найдёшь
📦 Бакет - контейнер верхнего уровня, куда складываешь объекты. Название бакета должно быть уникальным во всей системе. Вообще всей.
🔑 Ключ - полный путь к файлу. Например,
Вся строка целиком - это и есть ключ. Похоже на папки, да. Но внутри - нет, просто строка.
Почему S3 все так любят?
♾ Место не кончается - терабайты, петабайты. Система сама расширяется, когда ты добавляешь файлы.
💰 Дёшево - в 10–20 раз дешевле, чем хранить то же самое в нормальной базе данных или Data Warehouse.
❤️ Никуда не денется - данные копируются между серверами и даже между разными городами (дата-центрами). Риск потерять почти ноль.
Но есть и минусы, куда без них
❌ Неизменяемость - объекты нельзя просто «поправить». Хочешь изменить одно слово в текстовом файле? Качай новую версию целиком, перезаписывай старую. Всё заново.
❌ Не для баз данных - S3 медленнее, чем обычный диск. Не подходит для вещей, где данные надо менять мгновенно (например, для работающей базы интернет-магазина).
⏱ Задержки - доступ к файлу может быть медленнее, чем в обычной файловой системе.
А ещё S3 — это фундамент современной аналитики
Его называют «фундаментом» для Lakehouse. На S3 лежат огромные массивы сырых данных в открытых форматах (типа Parquet). А системы вроде Delta Lake или Apache Iceberg превращают эти файлы в удобные таблицы для аналитиков. Красота🍾
Сделать вам обзор на Delta Lake и Apache Iceberg (или уже 10 раз про них успели прочитать)?
S3 (Amazon Simple Storage Service) - если совсем просто, это «бездонная бочка». Гигантский виртуальный склад. Кидаешь туда файл любого типа и размера - и не думаешь, что место кончится.
Как оно устроено?
В отличие от компбютера(файловой системы) где файлы лежат в папках, тут всё плоское. Без иерархий. Вот три основных понятия, которые надо знать:
documents/2023/invoice.pdf.
Вся строка целиком - это и есть ключ. Похоже на папки, да. Но внутри - нет, просто строка.
Почему S3 все так любят?
Но есть и минусы, куда без них
А ещё S3 — это фундамент современной аналитики
Его называют «фундаментом» для Lakehouse. На S3 лежат огромные массивы сырых данных в открытых форматах (типа Parquet). А системы вроде Delta Lake или Apache Iceberg превращают эти файлы в удобные таблицы для аналитиков. Красота
Сделать вам обзор на Delta Lake и Apache Iceberg (или уже 10 раз про них успели прочитать)?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍33🔥12🥰5
Неделя офферов 💵 💵
Редко пишу про успехи менти, но на этой неделе результаты такие, что хочется поделиться. Сразу три оффера🔥
Самый яркий кейс - Кирилл (имена изменены). Учится очно в вузе на 4 курсе. С нуля, за 6 месяцев (обучение + собесы) получил оффер на 295 000 ₽.
Это к вопросу о том, что отсутствие профильного бэкграунда в IT не закрывает твоё будущее в DE. Будет труднее, но навык обучаться помогает справится со всеми сложностями!
Еще двое ребят с опытом за два месяца подготовки выросли в грейде и получили офферы на 340 000 ₽ и 327 000 ₽🔥
💬 За неделю до своего оффера Кирилл написал в наш закрытый чат сообщение, которое будет полезно всем, кто сейчас в процессе поиска:
➡️ Там я собрал необходимые знания, чтобы претендовать на офферы уровня 200к+
Сейчас я беру на менторство всего пару человек в месяц, чтобы сохранять качество и личный контроль‼️ Если вы хотите через полгода так же писать в чат о своем результате - пишите мне в личку @ampodvalniy, договоримся о коротком созвоне. Разберем вашу ситуацию и поймем, смогу ли я вам помочь 🫱🫲
Редко пишу про успехи менти, но на этой неделе результаты такие, что хочется поделиться. Сразу три оффера
Самый яркий кейс - Кирилл (имена изменены). Учится очно в вузе на 4 курсе. С нуля, за 6 месяцев (обучение + собесы) получил оффер на 295 000 ₽.
Это к вопросу о том, что отсутствие профильного бэкграунда в IT не закрывает твоё будущее в DE. Будет труднее, но навык обучаться помогает справится со всеми сложностями!
Еще двое ребят с опытом за два месяца подготовки выросли в грейде и получили офферы на 340 000 ₽ и 327 000 ₽
Для тех, кто не собесился, напишу. Мне оч страшно было резюме выкладывать, я смотрел записи других собесов и пугался: почему так сложно, как же будут люто спрашивать, я опозорюсь капец блин.Если вы сейчас тоже в поиске или только планируете выходить на рынок - для начала можете почитать мой Roadmap по Data Engineering
2 недели собеседуюсь уже, 3 оффера есть, от еще одной компании жду ответ, но собес там хорошо пройден. И могу сказать — реально уверенность в легенде своей решает. Если прям прочувствовать легенду свою, знать полностью, что ты делаешь на работе, каждый шаг, каждый даг пхпхпх, то норм будет. Потому что все теор вопросы по инструментам есть в роадмапе (в роадмапе даже больше, чем по факту спрашивают), а остальные вопросы по опыту по типу: “А у вас Greenplum распределенный был? А как ты distribution key выбрал, а partition by что делал?”. И если прям хорошо легенду знать, то на эти вопросы можно ответить. А если что-то прям вглубь копают, можно ответить, что не использовали это, но думаю, что это нужно для таких-то целей.
Иногда дают на собесах задачки по SQL и Python, но Python вот в * и * прям оч легкий был, без ООП, без всего. А SQL ну знать надо, это да. Поэтому основное для подготовки к собесам — это влюбиться в легенду свою, штуки по оптимизации знать и про план запроса (как анализировать), кратко про фишки инструментов и хорошо знать SQL.
Но к сожалению, даже если хорошо пройдешь собес, бывает, что у собеседующего настроение не то и не хочет тебя брать. Бывает, когда ну не прям грубят, но атмосфера прям неприятная, хочется уйти. Это у всех может быть вне зависимости от знаний. И тут только выдохнуть после собеса, покушать вкусно и не воспринимать слишком близко, идти дальше. Значит, не судьба, будут еще собесы. Всем удачи и побольше офферов, побольше мест, где вам будет приятно работать!
Сейчас я беру на менторство всего пару человек в месяц, чтобы сохранять качество и личный контроль
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍6🤔6❤4👏4
Первое видео на YouTube! 📹 📺
Знаю по своим ученикам (да и по себе), что самое сложное на собеседовании - это уверенно рассказать о своем опыте. Особенно если его объективно мало или вы решили немного приукрасить резюме.
Записал для вас видео, где мы с Катей провели мок-интервью…
В этом видео:
🔷 Как рассказывать о своем опыте?
🔷 Как отвечать на вопросы про стек, объемы данных и сложные ETL-процессы?
🔷 Что говорить об опыте, если его пока не хватает?
🔷 Можно потренироваться отвечать на вопросы
Полезно для тех, кто сейчас активно ходит по собесам или готовится к ним👍
Смотреть тут:
🔥 YouTube
💙 RuTube
Буду рад вашей поддержке: лайки и комментарии очень помогают продвигать видео. И пишите, какие темы разобрать в следующих выпусках — я все читаю🍾
Знаю по своим ученикам (да и по себе), что самое сложное на собеседовании - это уверенно рассказать о своем опыте. Особенно если его объективно мало или вы решили немного приукрасить резюме.
Записал для вас видео, где мы с Катей провели мок-интервью…
В этом видео:
Полезно для тех, кто сейчас активно ходит по собесам или готовится к ним
Смотреть тут:
Буду рад вашей поддержке: лайки и комментарии очень помогают продвигать видео. И пишите, какие темы разобрать в следующих выпусках — я все читаю
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20👍10❤7
Новая статья на VC
Кто такой дата-инженер в 2026 году и почему ИИ не заменил нас, а сделал работу дороже.
Спойлер:
✅ DE не умер
✅ код пишем меньше
✅ ошибки стоят дороже
✅ зарплаты приятно радуют
👉 Читать тут
Кто такой дата-инженер в 2026 году и почему ИИ не заменил нас, а сделал работу дороже.
Спойлер:
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍4🏆3😁2
Apache Iceberg: почему вокруг него столько шума и зачем он вообще нужен 🧊
Apache Iceberg — это открытый формат таблиц для огромных аналитических наборов данных в data lake.
И если раньше архитектуры на базе Hadoop и Hive нередко превращались в болото данных, то Iceberg придумали как способ сделать такие хранилища более надежными, быстрыми и удобными для аналитики.
Что такое Apache Iceberg🤨
Важно сразу понять одну вещь: Iceberg — это не хранилище вроде S3 или HDFS и не движок обработки запросов вроде Spark или Trino.
Это спецификация и набор библиотек, которые отвечают за то, как организованы файлы данных и метаданные. Благодаря этому поверх объектного хранилища можно получить поведение, похожее на работу обычной аналитической базы.
У Iceberg есть несколько сильных сторон🤔 :
ACID-транзакции — читатели не видят частичные или некорректные изменения, а каждое обновление проходит как атомарный коммит.
Time Travel — можно запросить состояние таблицы на конкретный момент времени или по номеру снапшота.
Эволюция схемы без боли — столбцы можно добавлять, переименовывать и удалять без переписывания всей таблицы.
Скрытое партиционирование — Iceberg сам помогает с раскладкой данных по папкам, и не требует вручную постоянно тащить это в запросы.
Главная идея Iceberg — он отслеживает не каталоги, а отдельные файлы данных.
Именно поэтому он так хорошо работает с большими таблицами и сложными сценариями обновлений.
Архитектура Iceberg состоит из трёх слоёв💠 :
1. Catalog layer
Это внешний сервис, который хранит ссылку на текущий файл метаданных таблицы. В этой роли могут выступать Hive Metastore, AWS Glue или REST-каталог подробнее про роль каталога.
2. Metadata layer
Здесь хранится вся логика таблицы:
🔷 metadata file — схема, информация о партиционировании и список снапшотов;
🔷 manifest list — набор файлов-манифестов для конкретного снапшота;
🔷 manifest file — список файлов данных и статистика по ним, включая min/max значения, чтобы движки могли пропускать лишнее при чтении.
3. Data layer
Это сами файлы данных, чаще всего Parquet, которые лежат в объектном хранилище или в HDFS.
Когда Iceberg действительно нужен🧑💻
🔷 data lake уже тормозит из-за миллионов файлов;
🔷 важна изоляция чтения и записи;
🔷 схема таблиц часто меняется;
🔷 не хочется каждый раз переписывать терабайты данных из-за очередного изменения структуры.
Проще говоря, Apache Iceberg превращает файловое хранилище в полноценную аналитическую систему, но без потери плюсов object storage — дешевизны и масштабируемости
Вы уже пробовали Iceberg? Как вам?🙂
Apache Iceberg — это открытый формат таблиц для огромных аналитических наборов данных в data lake.
И если раньше архитектуры на базе Hadoop и Hive нередко превращались в болото данных, то Iceberg придумали как способ сделать такие хранилища более надежными, быстрыми и удобными для аналитики.
Что такое Apache Iceberg
Важно сразу понять одну вещь: Iceberg — это не хранилище вроде S3 или HDFS и не движок обработки запросов вроде Spark или Trino.
Это спецификация и набор библиотек, которые отвечают за то, как организованы файлы данных и метаданные. Благодаря этому поверх объектного хранилища можно получить поведение, похожее на работу обычной аналитической базы.
У Iceberg есть несколько сильных сторон
ACID-транзакции — читатели не видят частичные или некорректные изменения, а каждое обновление проходит как атомарный коммит.
Time Travel — можно запросить состояние таблицы на конкретный момент времени или по номеру снапшота.
Эволюция схемы без боли — столбцы можно добавлять, переименовывать и удалять без переписывания всей таблицы.
Скрытое партиционирование — Iceberg сам помогает с раскладкой данных по папкам, и не требует вручную постоянно тащить это в запросы.
Главная идея Iceberg — он отслеживает не каталоги, а отдельные файлы данных.
Именно поэтому он так хорошо работает с большими таблицами и сложными сценариями обновлений.
Архитектура Iceberg состоит из трёх слоёв
1. Catalog layer
Это внешний сервис, который хранит ссылку на текущий файл метаданных таблицы. В этой роли могут выступать Hive Metastore, AWS Glue или REST-каталог подробнее про роль каталога.
2. Metadata layer
Здесь хранится вся логика таблицы:
3. Data layer
Это сами файлы данных, чаще всего Parquet, которые лежат в объектном хранилище или в HDFS.
Когда Iceberg действительно нужен
Проще говоря, Apache Iceberg превращает файловое хранилище в полноценную аналитическую систему, но без потери плюсов object storage — дешевизны и масштабируемости
Вы уже пробовали Iceberg? Как вам?
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7🔥3👏3😁1