09 · Элективы9.3–9.4 · Data Quality, lineage и security9.3.2средний

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.

Официальные материалы