Сбор и просмотр происхождения данных с помощью каталога Unity
В этой статье описывается, как записывать и визуализировать происхождение данных с помощью обозревателя каталогов, системных таблиц данных и REST API.
Каталог Unity можно использовать для отслеживания происхождения данных среды выполнения в запросах, выполняемых в Azure Databricks. Происхождение поддерживается для всех языков и записывается до уровня столбца. Данные происхождения включают записные книжки, задания и панели мониторинга, связанные с запросом. Происхождение можно визуализировать в обозревателе каталогов практически в реальном времени и получить программным способом с помощью системных таблиц происхождения и REST API Databricks.
Происхождение агрегируется во всех рабочих областях, подключенных к хранилищу метаданных каталога Unity. Это означает, что происхождение данных, собранное в одной рабочей области, отображается в любой другой рабочей области из этого хранилища метаданных. У пользователей должны быть правильные разрешения на просмотр данных происхождения. Данные о происхождении хранятся в течение 1 года.
На следующем рисунке представлен пример графика происхождения. Конкретные функции происхождения данных и примеры рассматриваются далее в этой статье.
Сведения об отслеживании происхождения модели машинного обучения см. в разделе "Отслеживание происхождения данных модели в каталоге Unity".
Требования
Для сбора происхождения данных с использованием каталога Unity необходимо следующее:
Таблицы должны быть зарегистрированы в хранилище метаданных каталога Unity.
В запросах должны использоваться кадры данных Spark (например, функции Spark SQL, возвращающие кадры данных) или интерфейсы Databricks SQL. Примеры запросов Databricks SQL и PySpark см. здесь.
Чтобы просмотреть происхождение таблицы или представления, пользователи должны иметь по крайней мере
BROWSE
права на родительский каталог таблицы или представления. Родительский каталог также должен быть доступен из рабочей области. См. раздел "Ограничить доступ к каталогам" для определенных рабочих областей.Чтобы просмотреть сведения о происхождении записных книжек, заданий или панелей мониторинга, пользователи должны иметь разрешения на эти объекты, как определено параметрами управления доступом в рабочей области. См. статью о разрешениях на происхождение данных.
Чтобы просмотреть конвейер с поддержкой каталога Unity, необходимо иметь
CAN_VIEW
разрешения на конвейер.Для отслеживания происхождения потоковой передачи между таблицами Delta требуется Databricks Runtime 11.3 LTS или более поздней версии.
Для отслеживания происхождения столбцов для рабочих нагрузок Delta Live Tables требуется Databricks Runtime 13.3 LTS или более поздней версии.
Возможно, потребуется обновить правила исходящего брандмауэра, чтобы разрешить подключение к конечной точке Центров событий в плоскости управления Azure Databricks. Обычно это применимо, если рабочая область Azure Databricks развертывается в собственной виртуальной сети (также называемой внедрением виртуальной сети). Чтобы получить конечную точку Центров событий для региона рабочей области, см . раздел "Хранилище метаданных", хранилище BLOB-объектов артефактов, хранилище системных таблиц, хранилище BLOB-объектов журнала и IP-адреса конечных точек Центров событий. Сведения о настройке определяемых пользователем маршрутов (UDR) для Azure Databricks см. в разделе Пользовательские параметры маршрутизации для Azure Databricks.
Примеры
Примечание.
В следующих примерах используется имя
lineage_data
каталога и имяlineagedemo
схемы. Чтобы использовать другой каталог и схему, измените имена, используемые в примерах.Для выполнения этого примера у вас должны быть привилегии
CREATE
иUSE SCHEMA
в схеме. Администратор хранилища метаданных, владелец каталога или владелец схемы могут предоставить вам эти привилегии. Например, чтобы предоставить всем пользователям группы разрешение "data_engineers" на создание таблиц в схемеlineage_data
вlineagedemo
каталоге, пользователь с одним из указанных выше привилегий или ролей может выполнять следующие запросы:CREATE SCHEMA lineage_data.lineagedemo; GRANT USE SCHEMA, CREATE on SCHEMA lineage_data.lineagedemo to `data_engineers`;
Сбор и изучение происхождения данных
Для записи данных происхождения:
Перейдите на целевую страницу Azure Databricks, щелкните "Создать " на боковой панели и выберите "Записная книжка " в меню.
Введите имя записной книжки и для параметра Язык по умолчанию выберите SQL.
В кластере выберите кластер с доступом к каталогу Unity.
Нажмите кнопку Создать.
В первой ячейке записной книжки введите следующие запросы:
CREATE TABLE IF NOT EXISTS lineage_data.lineagedemo.menu ( recipe_id INT, app string, main string, dessert string ); INSERT INTO lineage_data.lineagedemo.menu (recipe_id, app, main, dessert) VALUES (1,"Ceviche", "Tacos", "Flan"), (2,"Tomato Soup", "Souffle", "Creme Brulee"), (3,"Chips","Grilled Cheese","Cheesecake"); CREATE TABLE lineage_data.lineagedemo.dinner AS SELECT recipe_id, concat(app," + ", main," + ",dessert) AS full_menu FROM lineage_data.lineagedemo.menu
Чтобы выполнить запросы, щелкните ячейку и нажмите клавиши SHIFT+ВВОД или нажмите кнопку "Выполнить ячейку".
Чтобы использовать обозреватель каталогов для просмотра происхождения, созданного этими запросами:
В поле поиска в верхней строке рабочей области Azure Databricks найдите
lineage_data.lineagedemo.dinner
таблицу и выберите ее.Перейдите на вкладку "Происхождение". Откроется панель происхождения и отображает связанные таблицы (например, это
menu
таблица).Чтобы просмотреть интерактивный граф происхождения данных, нажмите Просмотреть график происхождения данных. По умолчанию в графе отображается один уровень. Щелкните значок на узле, чтобы показать больше подключений, если они доступны.
Щелкните стрелку, которая подключает узлы в графе происхождения, чтобы открыть панель подключения Lineage. На панели подключения к происхождению отображаются сведения о подключении, включая исходные и целевые таблицы, записные книжки и задания.
Чтобы отобразить записную книжку, связанную с таблицей
dinner
, выберите записную книжку на панели Подключение происхождения или закройте граф происхождения и щелкните Записные книжки. Чтобы открыть записную книжку на новой вкладке, щелкните имя записной книжки.Чтобы просмотреть происхождение на уровне столбцов, щелкните столбец в графе, чтобы отобразить ссылки на связанные столбцы. Например, щелкнув столбец "full_menu", отображает вышестоящие столбцы, от которые был получен столбец:
Чтобы просмотреть происхождение с помощью другого языка, например Python:
Откройте созданную ранее записную книжку, создайте новую ячейку и введите следующий код Python:
%python from pyspark.sql.functions import rand, round df = spark.range(3).withColumn("price", round(10*rand(seed=42),2)).withColumnRenamed("id","recipe_id") df.write.mode("overwrite").saveAsTable("lineage_data.lineagedemo.price") dinner = spark.read.table("lineage_data.lineagedemo.dinner") price = spark.read.table("lineage_data.lineagedemo.price") dinner_price = dinner.join(price, on="recipe_id") dinner_price.write.mode("overwrite").saveAsTable("lineage_data.lineagedemo.dinner_price")
Запустите ячейку, щелкнув ячейку и нажав клавиши SHIFT+ВВОД или щелкнув и выбрав "Выполнить ячейку".
В поле поиска в верхней строке рабочей области Azure Databricks найдите
lineage_data.lineagedemo.price
таблицу и выберите ее.Перейдите на вкладку "Происхождение" и нажмите кнопку "Просмотреть график происхождения". Щелкните значки для изучения происхождения данных, созданного запросами.
Щелкните стрелку, которая подключает узлы в графе происхождения, чтобы открыть панель подключения Lineage. На панели подключения к происхождению отображаются сведения о подключении, включая исходные и целевые таблицы, записные книжки и задания.
Сбор и просмотр сведений о происхождении рабочих процессов
Данные о происхождении также записываются для любого рабочего процесса, который считывает или записывает в каталог Unity. Чтобы просмотреть происхождение для рабочего процесса Azure Databricks, выполните приведенные действия.
Щелкните "Создать" на боковой панели и выберите "Записная книжка " в меню.
Введите имя записной книжки и для параметра Язык по умолчанию выберите SQL.
Нажмите кнопку Создать.
В первой ячейке записной книжки введите следующий запрос:
SELECT * FROM lineage_data.lineagedemo.menu
На верхней панели щелкните Расписание. В диалоговом окне расписания выберите "Вручную", выберите кластер с доступом к каталогу Unity и нажмите кнопку "Создать".
Щелкните Запустить сейчас.
В поле поиска в верхней строке рабочей области Azure Databricks найдите
lineage_data.lineagedemo.menu
таблицу и выберите ее.На вкладке "Линия происхождения" щелкните "Рабочие процессы" и выберите вкладку "Внизу". Имя задания отображается в разделе "Имя задания" в качестве потребителя
menu
таблицы.
Сбор и просмотр происхождения панели мониторинга
Чтобы создать панель мониторинга и просмотреть ее происхождение данных, выполните приведенные ниже действия.
Перейдите на целевую страницу Azure Databricks и откройте обозреватель каталогов, щелкнув каталог на боковой панели.
Щелкните имя каталога, щелкните lineagedemo и выберите таблицу
menu
. Вы также можете использовать поле поиска в верхней строке для поискаmenu
таблицы.Нажмите кнопку "Открыть" на панели мониторинга.
Выберите столбцы, которые нужно добавить на панель мониторинга, и нажмите кнопку "Создать".
Опубликуйте панель мониторинга.
Только опубликованные панели мониторинга отслеживаются в происхождении данных.
В поле поиска в верхней строке найдите
lineage_data.lineagedemo.menu
таблицу и выберите ее.На вкладке "Происхождение" щелкните панели мониторинга. Панель мониторинга отображается в разделе "Имя панели мониторинга" в качестве потребителя таблицы меню.
Разрешения на происхождение данных
Для графов происхождения используется та же модель разрешений, что и для каталога Unity. Если у пользователя нет BROWSE
прав или SELECT
привилегий в таблице, они не могут изучить происхождение. Кроме того, пользователи могут просматривать только записные книжки, задания и панели мониторинга, которые у них есть разрешение на просмотр. Например, если для пользователя userA
без прав администратора выполняются следующие команды:
GRANT USE SCHEMA on lineage_data.lineagedemo to `userA@company.com`;
GRANT SELECT on lineage_data.lineagedemo.menu to `userA@company.com`;
При userA
просмотре графа происхождения таблицы lineage_data.lineagedemo.menu
они увидят таблицу menu
. Они не смогут просматривать сведения о связанных таблицах, например нижестоящей lineage_data.lineagedemo.dinner
таблице. Таблица dinner
отображается в виде узла masked
на экране userA
, а userA
не может развернуть граф, чтобы отобразить подчиненные таблицы из таблиц, у которых нет разрешения на доступ.
Если вы выполните следующую команду, чтобы предоставить BROWSE
разрешение пользователю userB
, отличному от администратора:
GRANT BROWSE on lineage_data to `userA@company.com`;
userB
теперь можно просмотреть график происхождения для любой таблицы в схеме lineage_data
.
Дополнительные сведения об управлении доступом к защищаемым объектам в каталоге Unity см. в разделе "Управление привилегиями" в каталоге Unity. Дополнительные сведения об управлении доступом к объектам рабочей области, таким как записные книжки, задания и панели мониторинга, см . в списках управления доступом.
Удаление данных о происхождении данных
Предупреждение
Выполнив следующие инструкции, вы удалите все объекты, хранящиеся в каталоге Unity. Используйте их только при необходимости. Например, для соответствия требованиям.
Чтобы удалить данные о происхождении данных, необходимо удалить хранилище метаданных, управляющее объектами каталога Unity. Дополнительные сведения об удалении хранилища метаданных см. в статье Удаление хранилища метаданных. Данные будут удалены в течение 90 дней.
Запрос данных происхождения с помощью системных таблиц
Системные таблицы происхождения можно использовать для программного запроса данных происхождения. Подробные инструкции см. в статье "Мониторинг использования системных таблиц и системных таблиц lineage".
Если рабочая область находится в регионе, который не поддерживает системные таблицы происхождения, можно также использовать REST API Data Lineage для получения данных происхождения данных программным способом.
Получение происхождения с помощью REST API data lineage
API происхождения данных позволяет получить происхождение таблиц и столбцов. Однако если рабочая область находится в регионе, поддерживающем системные таблицы происхождения, следует использовать системные запросы таблиц вместо REST API. Системные таблицы — это лучший вариант для программного извлечения данных происхождения. Большинство регионов поддерживают системные таблицы происхождения.
Внимание
Чтобы получить доступ к REST API Databricks, необходимо пройти проверку подлинности.
Извлечение происхождения таблицы
В этом примере извлекаются данные происхождения данных для таблицы dinner
.
Запросить
curl --netrc -X GET \
-H 'Content-Type: application/json' \
https://<workspace-instance>/api/2.0/lineage-tracking/table-lineage \
-d '{"table_name": "lineage_data.lineagedemo.dinner", "include_entity_lineage": true}'
Замените <workspace-instance>
.
В этом примере используется файл .netrc.
Response
{
"upstreams": [
{
"tableInfo": {
"name": "menu",
"catalog_name": "lineage_data",
"schema_name": "lineagedemo",
"table_type": "TABLE"
},
"notebookInfos": [
{
"workspace_id": 4169371664718798,
"notebook_id": 1111169262439324
}
]
}
],
"downstreams": [
{
"notebookInfos": [
{
"workspace_id": 4169371664718798,
"notebook_id": 1111169262439324
}
]
},
{
"tableInfo": {
"name": "dinner_price",
"catalog_name": "lineage_data",
"schema_name": "lineagedemo",
"table_type": "TABLE"
},
"notebookInfos": [
{
"workspace_id": 4169371664718798,
"notebook_id": 1111169262439324
}
]
}
]
}
Извлечение происхождения столбца
В этом примере извлекаются данные происхождения данных для столбца dinner
.
Запросить
curl --netrc -X GET \
-H 'Content-Type: application/json' \
https://<workspace-instance>/api/2.0/lineage-tracking/column-lineage \
-d '{"table_name": "lineage_data.lineagedemo.dinner", "column_name": "dessert"}'
Замените <workspace-instance>
.
В этом примере используется файл .netrc.
Response
{
"upstream_cols": [
{
"name": "dessert",
"catalog_name": "lineage_data",
"schema_name": "lineagedemo",
"table_name": "menu",
"table_type": "TABLE"
},
{
"name": "main",
"catalog_name": "lineage_data",
"schema_name": "lineagedemo",
"table_name": "menu",
"table_type": "TABLE"
},
{
"name": "app",
"catalog_name": "lineage_data",
"schema_name": "lineagedemo",
"table_name": "menu",
"table_type": "TABLE"
}
],
"downstream_cols": [
{
"name": "full_menu",
"catalog_name": "lineage_data",
"schema_name": "lineagedemo",
"table_name": "dinner_price",
"table_type": "TABLE"
}
]
}
Ограничения
- Так как происхождение вычисляется в однолетнем скользящей окне, происхождение, собранное более одного года назад, не отображается. Например, если задание или запрос считывает данные из таблицы А и записывается в таблицу B, связь между таблицей A и таблицей B отображается только в течение одного года. Данные о происхождении можно фильтровать по временным интервалам в течение одного года.
- Задания, использующие запрос API
runs submit
заданий, недоступны при просмотре происхождения. Происхождение на уровне таблицы и столбца по-прежнему собирается при использовании запросаruns submit
, но ссылка на выполнение не входит в сбор. - Unity Catalog регистрирует происхождение на уровне столбца, когда это возможно. Однако в некоторых случаях не удается зарегистрировать происхождение данных на уровне столбца.
- Происхождение столбцов поддерживается только в том случае, если источник и целевой объект ссылаются по имени таблицы (пример:
select * from <catalog>.<schema>.<table>
). Происхождение столбцов невозможно записать, если источник или целевой объект устранен путем (пример:select * from delta."s3://<bucket>/<path>"
). - Если таблица или представление переименованы, строка происхождения не фиксируется для переименованной таблицы или представления.
- Если схема или каталог переименованы, строка происхождения не фиксируется для таблиц и представлений в переименованном каталоге или схеме.
- Если вы используете контрольные точки для набора данных Spark SQL, данные о происхождении не записываются.
- Каталог Unity записывает происхождение из конвейеров разностных динамических таблиц в большинстве случаев. Однако в некоторых случаях полное покрытие происхождения невозможно гарантировать, например, когда конвейеры используют API APPLY CHANGES или ВРЕМЕННЫЕ таблицы.
- Lineage не записывает функции стека.
- Глобальные временные представления не фиксируются в происхождении.
- Таблицы под
system.information_schema
не фиксируются в происхождении.