#вести_с_полей
Специализации в Data Engineering'e или что можно встретить в вакансиях 1/3
Вижу три роли, в которых можно развиваться в DE, не переходя в смежные роли вроде MLE или DataOps. В маленьких командах один человек может совмещать несколько, но при масштабировании компании обычно эти роли разделяют.
🔸 Собственно дата инженер (ETL Developer + Big Data)
Отвечает за загрузку источников в сырой слой хранилища. Работает с различными системами, например может требоваться опыт работы с Kafka, API, S3, SFTP, ODBC/JDBC, HDFS коннекторами. Приёмник -- одна-две системы, обычно Data Lake или Raw слой OLAP базы (н. Greenplum).
Основной инструмент -- ETL, обычно Spark, Flink и подобные. Оркестратор -- Airflow (в СНГ почти не видел конкурентов). Хорошая практика -- использовать data contracts через schema registry, потенциально с автоматизированной schema evolution.
Типичные задачи -- протянуть новое поле из источника, подключить новый источник, починить интеграцию после изменений на источнике, ускорить загрузку каких-то сущностей.
Много пишет на Python и/или Scala, подключается по SSH к ВМ и заходит в контейнеры, много работает с Linux и его файловой системой. В бизнес-правила почти не погружается, цель -- перенести данные без потерь и простоев "как есть", максимум применяя ``
Специализации в Data Engineering'e или что можно встретить в вакансиях 1/3
Вижу три роли, в которых можно развиваться в DE, не переходя в смежные роли вроде MLE или DataOps. В маленьких командах один человек может совмещать несколько, но при масштабировании компании обычно эти роли разделяют.
🔸 Собственно дата инженер (ETL Developer + Big Data)
Отвечает за загрузку источников в сырой слой хранилища. Работает с различными системами, например может требоваться опыт работы с Kafka, API, S3, SFTP, ODBC/JDBC, HDFS коннекторами. Приёмник -- одна-две системы, обычно Data Lake или Raw слой OLAP базы (н. Greenplum).
Основной инструмент -- ETL, обычно Spark, Flink и подобные. Оркестратор -- Airflow (в СНГ почти не видел конкурентов). Хорошая практика -- использовать data contracts через schema registry, потенциально с автоматизированной schema evolution.
Типичные задачи -- протянуть новое поле из источника, подключить новый источник, починить интеграцию после изменений на источнике, ускорить загрузку каких-то сущностей.
Много пишет на Python и/или Scala, подключается по SSH к ВМ и заходит в контейнеры, много работает с Linux и его файловой системой. В бизнес-правила почти не погружается, цель -- перенести данные без потерь и простоев "как есть", максимум применяя ``
hard rules
``.Специализации в Data Engineering'e или что можно встретить в вакансиях 2/3
🔸 Бэкенд-разработчик с уклоном в data-направление (Backend Engineer + Big Data)
Требуется, когда заказчиков сильно больше, чем исполнителей (н. 300 аналитиков на 5 дата инженеров), тогда закидывать задачи в бэклог и ждать их выполнения будет нереалистично.
Такие разработчики пишут и/или настраивают инструменты self-service аналитики, чтобы сами аналитики могли строить типовые пайплайны, объединять таблицы в витрины данных, на их основе строить дашборды. И помогают в случаях, когда нужно написать кастомную загрузку.
Этот путь требует от компании больших вложений в обучение аналитиков и автоматизации контроля качества кода. В среднем у них меньше компетенций для написания production-ready запросов в big data среде, чем у дата инженеров, поэтому нужно аналитикам с этим помогать, "давая удочку".
Задачами могут быть: написание или доработка алгоритмически эффективных микросервисов под Docker/Kubernetes; форк и доработка open-source решения под конкретные задачи; помощь в отладке самых непонятных ошибок в Hadoop'е (Java Stack Trace). В качестве big data специфики может быть работа с OLAP БД и колоночными типами данных, упор на MPP системы и масштабирование под прокачивание через сервисы сотен и тысяч ГБ данных в день.
🔸 Бэкенд-разработчик с уклоном в data-направление (Backend Engineer + Big Data)
Требуется, когда заказчиков сильно больше, чем исполнителей (н. 300 аналитиков на 5 дата инженеров), тогда закидывать задачи в бэклог и ждать их выполнения будет нереалистично.
Такие разработчики пишут и/или настраивают инструменты self-service аналитики, чтобы сами аналитики могли строить типовые пайплайны, объединять таблицы в витрины данных, на их основе строить дашборды. И помогают в случаях, когда нужно написать кастомную загрузку.
Этот путь требует от компании больших вложений в обучение аналитиков и автоматизации контроля качества кода. В среднем у них меньше компетенций для написания production-ready запросов в big data среде, чем у дата инженеров, поэтому нужно аналитикам с этим помогать, "давая удочку".
Задачами могут быть: написание или доработка алгоритмически эффективных микросервисов под Docker/Kubernetes; форк и доработка open-source решения под конкретные задачи; помощь в отладке самых непонятных ошибок в Hadoop'е (Java Stack Trace). В качестве big data специфики может быть работа с OLAP БД и колоночными типами данных, упор на MPP системы и масштабирование под прокачивание через сервисы сотен и тысяч ГБ данных в день.
Специализации в Data Engineering'e или что можно встретить в вакансиях 3/3
🔸 Analytics Engineer (DWH Developer + Big Data)
У этой роли появилось своё название, по крайней мере "на западе", и в СНГ оно тоже постепенно приживается. Такой специалист занимается раскладыванием тех данных, которые загрузили DE в сырой слой, по следующим слоям в хранилище. Часто занимается витринами данных с большим количеством бизнес-логики и хорошо понимает, как спроектировать хранилище устойчивым и масштабируемым.
Такой специалист работает внутри одной-двух систем (например, подготавливая в Greenplum витрины для Clickhouse), и глубоко знает, как они работают под капотом. Также отлично разбирается в моделировании данных (Data Vault, Anchor Modelling, Kimball Star/Snowflake, Inmon 3NF ...). Больше других общается с бизнесом для выяснения требований и отвечает за качество данных, чтобы при изменениях логики отлавливать ошибки. Здесь уже можно встретить запросы по 50 CTE шагов на 100 строчек каждый для расчёта одной витрины для какой-нибудь регулятивной отчётности.
Инструменты -- OLAP хранилище, ELT вроде DBT, SQL + Jinja как языки автоматизации, Airflow как оркестратор (через ``
Задачами могут быть: протянуть новое поле из сырого слоя в витрины, пересчитать на сырых данных новую модель за прошлый период, оптимизировать расчёт витрин под конкретный дашборд, перенести витрину в быструю колоночную СУБД, написать регрессионные тесты для более уверенного внесения изменений.
---
Не всегда названия роли отражают работу, которую нужно будет выполнять кандидату, например DWH разработчик может быть на самом деле бэкенд-разработчиком, а ETL разработчик -- собирать витрины в хранилище.
Поэтому смотри на задачи и обязанности, обсуждай ожидания на собеседовании.
❕ Какие ещё выделишь направления в DE? Делись мыслями в комментах.
🔸 Analytics Engineer (DWH Developer + Big Data)
У этой роли появилось своё название, по крайней мере "на западе", и в СНГ оно тоже постепенно приживается. Такой специалист занимается раскладыванием тех данных, которые загрузили DE в сырой слой, по следующим слоям в хранилище. Часто занимается витринами данных с большим количеством бизнес-логики и хорошо понимает, как спроектировать хранилище устойчивым и масштабируемым.
Такой специалист работает внутри одной-двух систем (например, подготавливая в Greenplum витрины для Clickhouse), и глубоко знает, как они работают под капотом. Также отлично разбирается в моделировании данных (Data Vault, Anchor Modelling, Kimball Star/Snowflake, Inmon 3NF ...). Больше других общается с бизнесом для выяснения требований и отвечает за качество данных, чтобы при изменениях логики отлавливать ошибки. Здесь уже можно встретить запросы по 50 CTE шагов на 100 строчек каждый для расчёта одной витрины для какой-нибудь регулятивной отчётности.
Инструменты -- OLAP хранилище, ELT вроде DBT, SQL + Jinja как языки автоматизации, Airflow как оркестратор (через ``
cosmos
`` или dbt-af), фреймворки качества данных вроде Great Expectations или Monte Carlo.Задачами могут быть: протянуть новое поле из сырого слоя в витрины, пересчитать на сырых данных новую модель за прошлый период, оптимизировать расчёт витрин под конкретный дашборд, перенести витрину в быструю колоночную СУБД, написать регрессионные тесты для более уверенного внесения изменений.
---
Не всегда названия роли отражают работу, которую нужно будет выполнять кандидату, например DWH разработчик может быть на самом деле бэкенд-разработчиком, а ETL разработчик -- собирать витрины в хранилище.
Поэтому смотри на задачи и обязанности, обсуждай ожидания на собеседовании.
❕ Какие ещё выделишь направления в DE? Делись мыслями в комментах.
#видео #моксобес
Третий мок-собес на youtube вышел, смотрим
-> Ссылка на видео
Видео-половинка с разбором и обратной связью уже на бусти boosty.to/rzv_de
В этот раз пожёстче спросил по теории.
Взамен запрашиваю у тебя жёсткую обратную связь по тому, что стоит улучшить.
"Эммм" и "скажем" услышал, буду выкорчёвывать. Что ещё?
p.s. Ухожу в отпуск на 2 недели, не теряй
Третий мок-собес на youtube вышел, смотрим
-> Ссылка на видео
Видео-половинка с разбором и обратной связью уже на бусти boosty.to/rzv_de
В этот раз пожёстче спросил по теории.
Взамен запрашиваю у тебя жёсткую обратную связь по тому, что стоит улучшить.
"Эммм" и "скажем" услышал, буду выкорчёвывать. Что ещё?
p.s. Ухожу в отпуск на 2 недели, не теряй
boosty.to
rzv Data Engineering - Ментор и автор тг @rzv_de: знания и рабочий опыт
🚀 Что внутри Boosty от rzv Data Engineering? Привет! Если ты хочешь прокачаться в Data Engineering, найти работу или просто быть среди единомышленников — тебе сюда. 🎯 Что получишь: - Практику, а не теорию: Разборы реальных вопросов, мок-собесы, шаблоны…
#видео #моксобес
Вернулся из отпуска не с пустыми руками. Четвёртый выпуск серии мок-собесов на youtube
-> Ссылка на видео
Видео-половинка с разбором и обратной связью уже на бусти boosty.to/rzv_de
(скоро должна допроцесситься, прошлая часть тоже доедет сегодня-завтра)
В этот раз тоже пожёстче спросил по теории, и кандидат отлично сдержал удар.
Как и раньше, запрашиваю у тебя жёсткую обратную связь по тому, что стоит улучшить.
Вернулся из отпуска не с пустыми руками. Четвёртый выпуск серии мок-собесов на youtube
-> Ссылка на видео
Видео-половинка с разбором и обратной связью уже на бусти boosty.to/rzv_de
(скоро должна допроцесситься, прошлая часть тоже доедет сегодня-завтра)
В этот раз тоже пожёстче спросил по теории, и кандидат отлично сдержал удар.
Как и раньше, запрашиваю у тебя жёсткую обратную связь по тому, что стоит улучшить.
YouTube
Мок-собеседование на middle+ Data Engineer S1E4 | rzv_de | Jul 2024
Погружаемся в роли интервьюера и кандидата на час, плотная получасовая обратная связь уже выложена на бусти.
https://boosty.to/rzv_de
https://boosty.to/rzv_de
https://boosty.to/rzv_de
Я не представляю компанию из интервью, вакансия выбрана кандидатом для…
https://boosty.to/rzv_de
https://boosty.to/rzv_de
https://boosty.to/rzv_de
Я не представляю компанию из интервью, вакансия выбрана кандидатом для…
#термин_дня
Ещё немного про BI: Drill-Down с точки зрения DE
🔸 Дрилл-даун это элемент дашборда, который наравне с фильтрами добавляет ему интерактивности. Визуально это выглядит как перестраивание графиков по клику на одну из выбранных категорий, "проваливание" внутрь её.
🔸 Зачем нужен? Позволяет исследовать данные естественным для человека способом "от общего к частному", не создавая при этом много страниц или отдельных графиков на каждую фиксированную комбинацию измерений для группировки. Добавляет глубину, не усложняя интерфейс.
🔸 Напомню, что меры это числовые значения (факты), а измерения -- некоторые атрибуты этих фактов. У измерений может быть иерархия (по временным периодам, год-квартал-месяц, или по структуре отделений -- страна-регион-город-магазин). Со стороны запросов это можно описать как расчёт суммы, количества или среднего значения на основе фактов с группировкой по измерениям.
🔸 С технической стороны дрилл-даун можно представить как добавление в group by агрегирующего запроса всё нового уровня иерархии с каждым кликом "вглубь". А со стороны моделей это можно реализовать или через "снежинку" (измерения 1го уровня ссылаются через PK-FK на измерения 2го уровня и тд), или через One Big Table, указывая иерархию в BI-инструменте. Именно такой вариант часто используют в паре с Clickhouse, куда загружают таблицу, сформированную через join/union на основе центрального слоя под конкретный сценарий, а движок шустро пересчитывает агрегаты с каждым нажатием.
🔸 Покликай живой дашборд по ссылке, сразу станет яснее. Нажми на ссылку -- Interact, потом на Children - Toys или на соседние категории. https://zoomcharts.com/en/microsoft-power-bi-custom-visuals/dashboard-and-report-examples/view/christmas-gift-power-bi-sales-dashboard-by-prathamesh-sawant
Ещё немного про BI: Drill-Down с точки зрения DE
🔸 Дрилл-даун это элемент дашборда, который наравне с фильтрами добавляет ему интерактивности. Визуально это выглядит как перестраивание графиков по клику на одну из выбранных категорий, "проваливание" внутрь её.
🔸 Зачем нужен? Позволяет исследовать данные естественным для человека способом "от общего к частному", не создавая при этом много страниц или отдельных графиков на каждую фиксированную комбинацию измерений для группировки. Добавляет глубину, не усложняя интерфейс.
🔸 Напомню, что меры это числовые значения (факты), а измерения -- некоторые атрибуты этих фактов. У измерений может быть иерархия (по временным периодам, год-квартал-месяц, или по структуре отделений -- страна-регион-город-магазин). Со стороны запросов это можно описать как расчёт суммы, количества или среднего значения на основе фактов с группировкой по измерениям.
🔸 С технической стороны дрилл-даун можно представить как добавление в group by агрегирующего запроса всё нового уровня иерархии с каждым кликом "вглубь". А со стороны моделей это можно реализовать или через "снежинку" (измерения 1го уровня ссылаются через PK-FK на измерения 2го уровня и тд), или через One Big Table, указывая иерархию в BI-инструменте. Именно такой вариант часто используют в паре с Clickhouse, куда загружают таблицу, сформированную через join/union на основе центрального слоя под конкретный сценарий, а движок шустро пересчитывает агрегаты с каждым нажатием.
🔸 Покликай живой дашборд по ссылке, сразу станет яснее. Нажми на ссылку -- Interact, потом на Children - Toys или на соседние категории. https://zoomcharts.com/en/microsoft-power-bi-custom-visuals/dashboard-and-report-examples/view/christmas-gift-power-bi-sales-dashboard-by-prathamesh-sawant
ZoomCharts
Christmas Gift Power BI Sales Dashboard by Prathamesh Sawant
Try live demo and download free .pbix template of this stunning and award-winning Power BI Sales Dashboard!
#реклама
С улыбкой делюсь перспективным каналом по DE с тобой.
Вспомнил, с каким трепетом сам писал первые посты (кстати, рекомендую пролистать наверх тем, кто недавно на канале).
"""
✋🏻 Всем привет, меня зовут Дмитрий, я работаю дата инженером.
Мне крайне интересна эта область, поскольку я очень любознательный.
В своем недавно созданном канале пишу про инженерию данных, рабочие кейсы и свои мысли.
Я учусь, поэтому могу где-то допускать ошибки.
Канал будет интересен и новичкам, и средним по уровню специалистам.
Присоединяйтесь, комментируйте, давайте обратную связь. Надеюсь, материал будет для вас полезным.
📝 Блог https://www.tgoop.com/kuzmin_dmitry91
"""
С улыбкой делюсь перспективным каналом по DE с тобой.
Вспомнил, с каким трепетом сам писал первые посты (кстати, рекомендую пролистать наверх тем, кто недавно на канале).
"""
✋🏻 Всем привет, меня зовут Дмитрий, я работаю дата инженером.
Мне крайне интересна эта область, поскольку я очень любознательный.
В своем недавно созданном канале пишу про инженерию данных, рабочие кейсы и свои мысли.
Я учусь, поэтому могу где-то допускать ошибки.
Канал будет интересен и новичкам, и средним по уровню специалистам.
Присоединяйтесь, комментируйте, давайте обратную связь. Надеюсь, материал будет для вас полезным.
📝 Блог https://www.tgoop.com/kuzmin_dmitry91
"""
Telegram
Дмитрий Кузьмин. Инженерия данных
Путь Data engineer от junior до lead.
Делюсь мыслями, рабочими кейсами, обучением. Блог для junior - middle DE.
🌐 Репозиторий: https://github.com/dim4eg91/DataEngineering/tree/main
📱 Мой профиль: @dim4eg91
📚 Курс по SQL: https://stepik.org/a/210499
Делюсь мыслями, рабочими кейсами, обучением. Блог для junior - middle DE.
🌐 Репозиторий: https://github.com/dim4eg91/DataEngineering/tree/main
📱 Мой профиль: @dim4eg91
📚 Курс по SQL: https://stepik.org/a/210499
#вести_с_полей
Как DE может решать задачи CI/CD 1/3
🔸 Представь, что есть некоторый сервис интеграции с источниками данных, который можно конфигурировать через JSON по API. И ещё у сервиса есть визуальный интерфейс, через который эти конфиги можно задавать напрямую, в обход гита, что и делали последние несколько месяцев, потому что так быстрее.
🔸 Какие минусы у ручного подхода? Нет истории изменений, проверки перед применением очередной версии конфига, ещё и параметры подключения к сервисам (credentials) могут храниться в обычном текстовом виде. Безопасники не будут дружить с такими дата инженерами. И, если контур один, эти изменения применяются напрямую на проде, что редко добавляет стабильности работе системы.
🔸 Такие проблемы можно решить через CI/CD: CI -- непрерывная интеграция (continuous integration), CD -- непрерывная доставка (delivery) или развёртывание (deploy). Объединяет и упрощает совместные изменения в команде и унифицирует способ "применения" изменений на разных контурах (дев, тест, прод). Для дев/тест среды обычно есть тесты перед авто-развёртыванием, а для для прода часто выбирают Continuous Delivery -- подготовку поставки, которую можно развернуть по нажатию кнопки человеком. Например, через approve pull request'a.
Как DE может решать задачи CI/CD 1/3
🔸 Представь, что есть некоторый сервис интеграции с источниками данных, который можно конфигурировать через JSON по API. И ещё у сервиса есть визуальный интерфейс, через который эти конфиги можно задавать напрямую, в обход гита, что и делали последние несколько месяцев, потому что так быстрее.
🔸 Какие минусы у ручного подхода? Нет истории изменений, проверки перед применением очередной версии конфига, ещё и параметры подключения к сервисам (credentials) могут храниться в обычном текстовом виде. Безопасники не будут дружить с такими дата инженерами. И, если контур один, эти изменения применяются напрямую на проде, что редко добавляет стабильности работе системы.
🔸 Такие проблемы можно решить через CI/CD: CI -- непрерывная интеграция (continuous integration), CD -- непрерывная доставка (delivery) или развёртывание (deploy). Объединяет и упрощает совместные изменения в команде и унифицирует способ "применения" изменений на разных контурах (дев, тест, прод). Для дев/тест среды обычно есть тесты перед авто-развёртыванием, а для для прода часто выбирают Continuous Delivery -- подготовку поставки, которую можно развернуть по нажатию кнопки человеком. Например, через approve pull request'a.
Как DE может решать задачи CI/CD 2/3
🔸 Итак, реализация. В 90+% случаев это или Gitlab CI, или Github Workflows, или Atlassian Bamboo (в дополнение к bitbucket). Код workflow (или pipeline) задаётся в YAML файле, где определяются атомарные действия (шаги, степы) и группы шагов (джобы). Внутри обычно встретишь или много bash кода, или готовые "actions" из маркетплейса (примерно как операторы в airflow).
🔸 У каждого шага и джоба есть статус выполнения, input, output, к которым можно обращаться в других шагах и джобах. Можно вешать условия на выполнение -- например, делать деплой только после успешного выполнения всех тестов.
🔸 Также удобно выносить часть кода в переиспользуемые действия, обращаясь к ним как к степам из маркетплейса. И, что мне как питонисту близко, -- выносить код взаимодействия с сервисом в набор .py скриптов. Поэтому в дополнение к главному YAML может быть ещё директория в гите, где лежат тесты и код деплоя, общающиеся с сервисом через API. А workflow склеивает это воедино и задаёт логику перехода между шагами. И отчёты формирует для чтения статуса людьми.
🔸 Итак, реализация. В 90+% случаев это или Gitlab CI, или Github Workflows, или Atlassian Bamboo (в дополнение к bitbucket). Код workflow (или pipeline) задаётся в YAML файле, где определяются атомарные действия (шаги, степы) и группы шагов (джобы). Внутри обычно встретишь или много bash кода, или готовые "actions" из маркетплейса (примерно как операторы в airflow).
🔸 У каждого шага и джоба есть статус выполнения, input, output, к которым можно обращаться в других шагах и джобах. Можно вешать условия на выполнение -- например, делать деплой только после успешного выполнения всех тестов.
🔸 Также удобно выносить часть кода в переиспользуемые действия, обращаясь к ним как к степам из маркетплейса. И, что мне как питонисту близко, -- выносить код взаимодействия с сервисом в набор .py скриптов. Поэтому в дополнение к главному YAML может быть ещё директория в гите, где лежат тесты и код деплоя, общающиеся с сервисом через API. А workflow склеивает это воедино и задаёт логику перехода между шагами. И отчёты формирует для чтения статуса людьми.
Как DE может решать задачи CI/CD 3/3
🔸 Первое время немного неуклюже выглядит интеграция python и bash. Для этого нужно пробрасывать параметры из workflow в python скрипт и передавать результат работы обратно, но GPT помогают с нюансами Bash, и со временем картинка выстраивается. Кстати, я недавно перешёл на Claude Sonet, пока нравится больше, чем Gemini. Приятно, этот инструмент становится привычным, и на дейликах разработчики больше не стесняются говорить о парной работе с таким помощником.
🔸 Немного про разделение ответственности. В компаниях, где я работал, обычно было так: девопсы поднимают сервисы в ВМ или в контейнерах, а как с ними будут работать DE -- дело последних. Например, пайплайн по перезапуску упавшего Airflow скорее напишет DevOps. Пайплайн по доставке дагов из гита и тесты для проверок кода скорее будут писать DE.
❕ Пиши в комментах, с какими нюансами CI/CD столкнули рабочие задачи тебя. Или пока ещё дикий запад и всё накатывается руками?
🔸 Первое время немного неуклюже выглядит интеграция python и bash. Для этого нужно пробрасывать параметры из workflow в python скрипт и передавать результат работы обратно, но GPT помогают с нюансами Bash, и со временем картинка выстраивается. Кстати, я недавно перешёл на Claude Sonet, пока нравится больше, чем Gemini. Приятно, этот инструмент становится привычным, и на дейликах разработчики больше не стесняются говорить о парной работе с таким помощником.
🔸 Немного про разделение ответственности. В компаниях, где я работал, обычно было так: девопсы поднимают сервисы в ВМ или в контейнерах, а как с ними будут работать DE -- дело последних. Например, пайплайн по перезапуску упавшего Airflow скорее напишет DevOps. Пайплайн по доставке дагов из гита и тесты для проверок кода скорее будут писать DE.
❕ Пиши в комментах, с какими нюансами CI/CD столкнули рабочие задачи тебя. Или пока ещё дикий запад и всё накатывается руками?
Разыгрываю мок-собес!
Разыгрываю одну запись тренировочного технического интервью (с выкладыванием на youtube), победителю нужно будет запланировать 1.5 часовой звонок в течение двух недель после окончания розыгрыша.
Начинаем сейчас, заканчиваем 2024-08-20 в 23:00 мск.
Примеры можно посмотреть здесь
Можно остаться анонимным(-ой), попросить изменить высоту голоса, внести помехи, закрыть имя и пр.
Разыгрываю одну запись тренировочного технического интервью (с выкладыванием на youtube), победителю нужно будет запланировать 1.5 часовой звонок в течение двух недель после окончания розыгрыша.
Начинаем сейчас, заканчиваем 2024-08-20 в 23:00 мск.
Примеры можно посмотреть здесь
Можно остаться анонимным(-ой), попросить изменить высоту голоса, внести помехи, закрыть имя и пр.
#видео #моксобес
Новое видео на канале -- пробую систем дизайн секцию технического интервью. Пока неказисто, но дорогу осилит идущий!
-> Ссылка на видео (youtube)
-> Ссылка на видео (vk video)
Видео записали вместе с @halltape_data, спасибо, Женя, за участие.
Оставляй благодарность и критику, пробуй спроектировать платформу данных по вводным самостоятельно. Прокачиваемся!
Новое видео на канале -- пробую систем дизайн секцию технического интервью. Пока неказисто, но дорогу осилит идущий!
-> Ссылка на видео (youtube)
-> Ссылка на видео (vk video)
Видео записали вместе с @halltape_data, спасибо, Женя, за участие.
Оставляй благодарность и критику, пробуй спроектировать платформу данных по вводным самостоятельно. Прокачиваемся!
YouTube
Data Engineer тренирует System Design секцию. Собеседует @halltape | rzv_de | Aug 2024
-- Больше контента по ссылкам --
Канал Жени DE - https://www.tgoop.com/halltape_data
Boosty Жени DE - https://boosty.to/halltape_data
Канал Лёши DE - https://www.tgoop.com/rzv_de
Boosty Лёши DE - https://boosty.to/rzv_de
-- Пояснение к видео --
Публично тренируюсь проходить…
Канал Жени DE - https://www.tgoop.com/halltape_data
Boosty Жени DE - https://boosty.to/halltape_data
Канал Лёши DE - https://www.tgoop.com/rzv_de
Boosty Лёши DE - https://boosty.to/rzv_de
-- Пояснение к видео --
Публично тренируюсь проходить…
#вести_с_полей
Настройка CDC на примере Kafka Connect, Debezium и Postgres 1/2
🔸 Итак, что такое CDC и зачем это надо.
Change data capture это технология захвата изменений данных с источника, для реляционных СУБД — обычно через лог базы данных. В таком случае таблица не блокируется, нагружается именно компонент, отвечающий за репликацию. В отличие от батч загрузок, которые запускаются по расписанию и теряют промежуточные изменения, CDC подтягивает все операции. Это и благо, если такая детализация нужна, и головная боль, если надо схлопывать эти изменения и сохранять только состояние, например, на закрытие операционного дня.
🔸 CDC создаёт поток изменений, который можно использовать для стриминговой загрузки. Но как связаны между собой Kafka Connect, Debezium и Kafka? Для ознакомления допустим, что Debezium CDC коннекторы используются как компоненты Kafka Connect для подключения к источникам. Для приёмников используются внутренние компоненты Kafka Connect (Sink). Данные между Debezium CDC и Kafka Connect Sink лежат в топиках кафки.
🔸 Как это может выглядеть на практике?
* Считаем, что сервисы уже развёрнуты и доступны по сети, и у тебя есть ко всему доступ и данные для входа (credentials). Плагины на Kafka Connect установлены для всех источников и приёмников, которые нам понадобятся.
* Создай слот репликации в базе, такой же как для обычных реплик.
* Подготовь конфигурацию для Кафка коннекта — о ней будет ниже.
* Отправь POST запрос на API endpoint сервиса Kafka Connect для публикации коннектора, где указываются конфиг и имя.
* Проверь статус самого коннектора через GET запрос или UI, он должен быть "up and running".
* Зайди через UI или CLI в список топиков, найди по
Теперь данные попадают в кафку и накапливаются в ней. Осталось аналогично настроить Sink для выгрузки данных в нужное место из топика, передав там маппинг топик-таблица.
Настройка CDC на примере Kafka Connect, Debezium и Postgres 1/2
🔸 Итак, что такое CDC и зачем это надо.
Change data capture это технология захвата изменений данных с источника, для реляционных СУБД — обычно через лог базы данных. В таком случае таблица не блокируется, нагружается именно компонент, отвечающий за репликацию. В отличие от батч загрузок, которые запускаются по расписанию и теряют промежуточные изменения, CDC подтягивает все операции. Это и благо, если такая детализация нужна, и головная боль, если надо схлопывать эти изменения и сохранять только состояние, например, на закрытие операционного дня.
🔸 CDC создаёт поток изменений, который можно использовать для стриминговой загрузки. Но как связаны между собой Kafka Connect, Debezium и Kafka? Для ознакомления допустим, что Debezium CDC коннекторы используются как компоненты Kafka Connect для подключения к источникам. Для приёмников используются внутренние компоненты Kafka Connect (Sink). Данные между Debezium CDC и Kafka Connect Sink лежат в топиках кафки.
🔸 Как это может выглядеть на практике?
* Считаем, что сервисы уже развёрнуты и доступны по сети, и у тебя есть ко всему доступ и данные для входа (credentials). Плагины на Kafka Connect установлены для всех источников и приёмников, которые нам понадобятся.
* Создай слот репликации в базе, такой же как для обычных реплик.
* Подготовь конфигурацию для Кафка коннекта — о ней будет ниже.
* Отправь POST запрос на API endpoint сервиса Kafka Connect для публикации коннектора, где указываются конфиг и имя.
* Проверь статус самого коннектора через GET запрос или UI, он должен быть "up and running".
* Зайди через UI или CLI в список топиков, найди по
topic.prefix
и имени таблицы нужный, проверь что сообщения появились и в них содержатся данные из таблички.Теперь данные попадают в кафку и накапливаются в ней. Осталось аналогично настроить Sink для выгрузки данных в нужное место из топика, передав там маппинг топик-таблица.
Настройка CDC на примере Kafka Connect, Debezium и Postgres 2/2
🔸 Несколько важных параметров json конфига:
*
*
*
*
*
*
Также могут быть описаны трансформации данных, heartbeat таблица и топик для постоянной проверки статуса соединения, запросы кастомной инициализации соединения в бд и др.
🔸 Несколько важных параметров json конфига:
*
name
— имя коннектора, должно быть уникально в кластере*
connector.class
— тип подключения, например io.debezium.connector.postgresql.PostgresConnector
для загрузки данных ИЗ базы или io.confluent.connect.jdbc.JdbcSinkConnector
для загрузки В базу*
database.[creds]
— hostname, dbname, password, user, port, всё как обычно*
snapshot.mode
— режим создания снимков; при первом запуске обычно выбирают initial
, чтобы подтянуть историю, и потом факт загрузки истории фиксируется в кафке; never
может пригодиться, если мы пересоздаём коннектор с другим именем, но тем же источником, чтобы не задублировать историю*
topic.prefix
— буквально, префикс топика, которые будут созданы для каждой таблицы из table.include.list
*
slot.name
— имя слота репликации в базе, который нужно создать заранееТакже могут быть описаны трансформации данных, heartbeat таблица и топик для постоянной проверки статуса соединения, запросы кастомной инициализации соединения в бд и др.
#поразмыслим
С какими проблемами может столкнуться дата инженер, выполняя изменение схемы данных на проде (schema evolution)?
Как эти проблемы можно решить на проекте?
Ограничимся RDBMS MPP классом систем
С какими проблемами может столкнуться дата инженер, выполняя изменение схемы данных на проде (schema evolution)?
Как эти проблемы можно решить на проекте?
Ограничимся RDBMS MPP классом систем