раздел 26

Data Engineering

Профессия дата-инженера с нуля: ETL и ELT, хранилища и форматы, моделирование, ночные пайплайны в Airflow, витрины и тесты данных в dbt, потоки событий в Kafka. Дальше аналитика на больших данных: колоночные базы (ClickHouse), DWH (Snowflake, BigQuery), lakehouse (Iceberg, Delta), форматы (Parquet, ORC), потоковая обработка (Flink, Spark Streaming).

99 уроков112 тем · 35 кластеров

Начать раздел
Хочу пройти

Без входа у каждого урока видно начало. Войди, чтобы читать целиком, отмечать пройденное и решать задачи. войти

«Data Engineering» покупается один раз и остаётся навсегда: 500 ₽. Оплата пока не подключена, доступ открывается промокодом. ввести промокод

Уроки раздела

  1. Кто такой data engineer и зачем он нуженJ~10 минкурс
  2. ETL против ELTJ~15 минкурс
  3. Источники и приёмники данныхJ~15 минкурс
  4. Batch против streamingJ~15 минкурс
  5. Data lake, warehouse и lakehouseJ~15 минкурс
  6. Форматы данных: CSV, JSON, ParquetJ~15 минкурс
  7. Схема звезды: факты и измеренияJ~15 минкурс
  8. Партиционирование таблицJ~10 минкурс
  9. Нормализация против денормализацииJ~15 минкурс
  10. Что такое оркестрация и AirflowJ~15 минкурс
  11. DAG, задачи и операторыJ~15 минкурс
  12. Первый DAG: расписание и параметрыJ~15 минкурс
  13. Зависимости задач: оператор сдвигаJ~15 минкурс
  14. Backfill: перезаливка историиJ~15 минкурс
  15. Идемпотентность и повторные запускиJ~10 минкурс
  16. Качество данных и валидацияJ~15 минкурс
  17. ETL-пайплайн: CSV в базу данныхJ~15 минкурс
  18. Инкрементальная загрузкаJ~10 минкурс
  19. Мониторинг и обзор инструментовJ~15 минкурс
  20. Батч против стрима: два взгляда на данныеJ~15 минкурс
  21. Проблема M×N: ад точечных интеграцийJ~15 минкурс
  22. Реальное время: где задержка решаетJ~15 минкурс
  23. Где Kafka в карте инструментов данныхJ~15 минкурс
  24. Kafka как распределённый лог событийJ~15 минкурс
  25. Event streaming и event-driven архитектураJ~15 минкурс
  26. Топик, партиция, оффсет, брокер, кластерJ~15 минкурс
  27. Первый кластер: запуск и первые команды CLIJ~15 минкурс
  28. Лог как абстракция: почему append-only так силёнJ~15 минкурс
  29. Партиции и параллелизм: как Kafka масштабируетсяJ~15 минкурс
  30. Ключ партиционирования и порядок внутри партицииJ~15 минкурс
  31. Продюсеры: отправка, ключи, батчингJ~15 минкурс
  32. Подтверждения (acks) и идемпотентный продюсерJ~15 минкурс
  33. Консьюмеры и группы: параллельное чтениеJ~15 минкурс
  34. Оффсеты и семантики доставкиJ~15 минкурс
  35. Репликация и ISR: как не терять данныеJ~15 минкурс
  36. Хранение и retention: Kafka помнит долгоJ~15 минкурс
  37. Лог-компакция: последнее значение по ключуJ~15 минкурс
  38. Гарантии доставки и exactly-once на практикеJ~15 минкурс
  39. Сериализация и Schema RegistryJ~15 минкурс
  40. Kafka Connect: интеграция без кодаJ~15 минкурс
  41. Kafka Streams: обработка потоковJ~15 минкурс
  42. ksqlDB: SQL над потокамиJ~15 минкурс
  43. Event sourcing, CQRS и лог как источник истиныJ~15 минкурс
  44. Kafka в микросервисах: асинхронная развязкаJ~15 минкурс
  45. Альтернативы: RabbitMQ, Pulsar, RedpandaJ~15 минкурс
  46. KRaft и почему Kafka быстраяJ~15 минкурс
  47. Мониторинг и эксплуатация: лаг консьюмераJ~15 минкурс
  48. Типичные ошибки и антипаттерныJ~15 минкурс
  49. Реальный пример: поток заказов в аналитикуJ~15 минкурс
  50. Зачем нужен Spark: когда данные перестают влезатьJ~15 минкурс
  51. Архитектура Spark: driver, executors и кластерJ~10 минкурс
  52. SparkSession и экосистема SparkJ~15 минкурс
  53. RDD: неизменяемость, lineage и отказоустойчивостьJ~10 минкурс
  54. Трансформации и действия: ленивость как основа SparkJ~10 минкурс
  55. Shuffle, узкие и широкие зависимости, кэшированиеJ~10 минкурс
  56. DataFrame против RDD: Catalyst и TungstenJ~10 минкурс
  57. Создание DataFrame, схемы и базовые операцииJ~15 минкурс
  58. Функции, типы, null и чтение/запись ParquetJ~15 минкурс
  59. Spark SQL, группировки и оконные функцииJ~10 минкурс
  60. JOIN в Spark: broadcast против sort-mergeJ~10 минкурс
  61. UDF и pandas UDF: почему обычные UDF медленныеJ~10 минкурс
  62. Партиционирование: сколько партиций, repartition и coalesceJ~10 минкурс
  63. Shuffle и перекос данных: диагностика и приёмыJ~10 минкурс
  64. План выполнения, Catalyst/Tungsten и типичные ошибкиJ~15 минкурс
  65. Structured Streaming: бесконечная таблица и watermarksJ~10 минкурс
  66. MLlib, развёртывание и конфигурацияJ~15 минкурс
  67. Spark в дата-пайплайне: облако, форматы и что дальшеJ~15 минкурс
  68. Аналитическая инженерия: новая роль в данныхJ~15 минкурс
  69. Проблема, которую решает dbtJ~15 минкурс
  70. ELT против ETL: почему трансформации в хранилищеJ~15 минкурс
  71. dbt Core против dbt Cloud и установкаJ~15 минкурс
  72. profiles.yml: подключение к хранилищуJ~15 минкурс
  73. Первая модель: model = SELECTJ~15 минкурс
  74. ref() и автоматический граф моделейJ~15 минкурс
  75. source(): объявляем сырые таблицыJ~15 минкурс
  76. Материализации: view, table и ephemeralJ~15 минкурс
  77. Инкрементальные модели: только новые данныеJ~15 минкурс
  78. Слои модели: staging, intermediate и martsJ~15 минкурс
  79. Jinja: шаблонизатор поверх SQLJ~15 минкурс
  80. Макросы и пакет dbt_utilsJ~15 минкурс
  81. Встроенные тесты: unique, not_null и другиеJ~15 минкурс
  82. Свои тесты: singular, generic и unitJ~15 минкурс
  83. Документация и dbt docsJ~15 минкурс
  84. Seeds: статичные данные из CSVJ~15 минкурс
  85. Snapshots: история изменений (SCD type 2)J~15 минкурс
  86. dbt_project.yml: конфигурация и тегиJ~15 минкурс
  87. Запуск и выбор: run, test, build и селекторыJ~15 минкурс
  88. Окружения dev и prod и dbt в AirflowJ~15 минкурс
  89. CI/CD для dbt: slim CI и проверки в пулл-реквестеJ~15 минкурс
  90. Хранилища, адаптеры, хуки и операцииJ~15 минкурс
  91. Лучшие практики и реальный пример витринJ~15 минкурс
  92. Колоночные базы и ClickHouse: почему агрегаты летаютMS~80 минкурс
  93. Distributed ClickHouse: репликация, шардирование, план запросаS~80 минкурс
  94. Cloud DWH: Snowflake, BigQuery, RedshiftMS~60 минкурс
  95. Lakehouse: Iceberg, Delta, HudiS~55 минкурс
  96. Колоночные форматы: Parquet, ORC, ArrowM~60 минкурс
  97. Streaming foundations: Kafka и log-based архитектураMS~70 минкурс
  98. Stream processing: Flink, Spark Streaming, ksqlDBS~70 минкурс
  99. Моделирование данных: star schema, SCD, антипаттерныMS~70 минкурс

Понятия курса

Понятия разобраны внутри уроков. Нажми на понятие, чтобы открыть урок, где оно объясняется.

Профессия дата-инженера

  • Источники и приёмники данныхОткуда берутся данные (рабочие базы, API, файлы партнёров, события приложений) и куда их кладут: хранилище, озеро, витрины, другие сервисы.урок 3 · Источники и приёмники данныхопираются: урок 4
  • Кто такой data engineerДата-инженер строит дороги, по которым данные едут из рабочих баз и сервисов в хранилище и дальше на дашборды и в модели. Чем он отличается от аналитика и бэкендера.урок 1 · Кто такой data engineer и зачем он нуженопираются: урок 2
  • ETL против ELTГде чистить данные: по дороге, до загрузки в хранилище, или уже внутри него, SQL-запросами. Почему с дешёвыми облачными хранилищами победил ELT.урок 2 · ETL против ELTопираются: урок 3, урок 68

Хранение данных и форматы

  • Форматы данных: CSV, JSON, ParquetСтрочные форматы удобно читать человеку и писать по строке, колоночный Parquet жмётся и читается выборочно. Что выбрать для выгрузки, обмена и хранилища.урок 6 · Форматы данных: CSV, JSON, Parquetопираются: урок 7, урок 58
  • Batch против streamingНочная пачка или поток событий: как выбрать по допустимой задержке, цене и сложности. Большинство задач аналитики спокойно живут в батче.урок 4 · Batch против streamingопираются: урок 5, урок 20, урок 50
  • Data lake, warehouse и lakehouseХранилище держит чистые таблицы для SQL, озеро хранит всё сырым в файлах, lakehouse добавляет к файлам таблицы с транзакциями.урок 5 · Data lake, warehouse и lakehouseопираются: урок 6

Основы моделирования данных

Airflow: основы оркестрации

Airflow: зависимости, backfill и идемпотентность

Airflow на практике

Kafka: зачем потоковая обработка

Kafka: что это такое

Kafka: лог, партиции и параллелизм

Kafka: продюсеры, консьюмеры и группы

Kafka: надёжность, хранение и гарантии

Kafka: экосистема

Kafka: паттерны и альтернативы

Kafka: под капотом и эксплуатация

Spark: большие данные и архитектура

Spark: RDD и модель вычислений

Spark: DataFrame API

Spark: SQL, агрегации и соединения

Spark: производительность

Spark: стриминг и продакшн

dbt: аналитическая инженерия

dbt: установка и первая модель

dbt: ref, source и граф

dbt: материализации

dbt: слои и Jinja

dbt: тесты и документация

dbt: сиды и снапшоты

dbt: конфигурация, окружения и CI

Колоночные базы и OLAP

Распределённый ClickHouse

DWH (Snowflake, BigQuery, Redshift)

Lakehouse (Iceberg, Delta, Hudi)

  • ACID и time travel в lakehouseКак atomic-commit делается через указатель на manifest, snapshot isolation, time travel, vacuum старых snapshot-ов.урок 95 · Lakehouse: Iceberg, Delta, Hudi
  • Iceberg, Delta, Hudi: trade-offsСравнение трёх форматов: что лучше для streaming-upsert, что для batch-аналитики, как с эволюцией схемы.урок 95 · Lakehouse: Iceberg, Delta, Hudi
  • Lakehouse: ACID-таблицы поверх object storeИдея lakehouse: ACID-семантика и time travel поверх Parquet в S3. Чем это отличается от классического data lake.урок 95 · Lakehouse: Iceberg, Delta, Hudi

Колоночные форматы (Parquet, ORC, Arrow)

Стриминг (Kafka, Flink, Spark, ksqlDB)

Моделирование данных