9.3.2 · блок 9
Lineage: OpenLineage
Lineage: OpenLineage
Зачем это нужно
После инцидента нужно быстро ответить: какие данные попали в модель, какие job их преобразовали и какие модели затронуты изменением таблицы. Lineage делает эту цепочку машиночитаемой, а не восстановленной из переписки.
Основные идеи
Lineage — происхождение и зависимости данных: inputs → job/run → outputs. Это отличается от версии: версия говорит «какой объект», lineage — «как он получен».
OpenLineage определяет открытый объектный формат событий. Основные сущности:
| Сущность | Смысл |
|---|---|
| Dataset | таблица, файл, topic или другой набор данных |
| Job | логическая задача преобразования |
| Run | конкретный запуск job |
Marquez — один из сервисов, который принимает и показывает OpenLineage-события. Сам стандарт не привязывает вас к одной витрине.
Граница детализации. Не нужно отправлять полный DataFrame или PII. Достаточно идентификаторов dataset, URI, schema/version, job name, run id и статуса.
Как это выглядит на практике
Train job читает s3://ml/churn/features/v3, создаёт models/churn/v12 и посылает событие: input dataset, job train-churn, run UUID, output artifact, commit SHA. Когда schema features/v3 меняется, граф показывает все training runs и модели, которые нужно проверить.
Lineage не заменяет registry: registry хранит статус, владельца и approval модели; lineage связывает её с входами и процессом выпуска.
Что сделать после занятия
- [ ] Нарисуйте lineage для одного pipeline: raw → features → train → model.
- [ ] Выберите идентификаторы, которые не меняются между rerun.
- [ ] Опишите, какие поля нельзя посылать в telemetry из-за PII.