Настройка параметров конвейера для разностных динамических таблиц

В этой статье содержатся сведения о настройке параметров конвейера для разностных динамических таблиц. Delta Live Tables предоставляет пользовательский интерфейс для настройки и редактирования параметров конвейера. Пользовательский интерфейс также предоставляет возможность отображения и редактирования параметров в ФОРМАТЕ JSON.

Примечание.

Большинство параметров можно настроить с помощью пользовательского интерфейса или спецификации JSON. Некоторые дополнительные параметры доступны только с помощью конфигурации JSON.

Databricks рекомендует ознакомиться с параметрами Delta Live Tables с помощью пользовательского интерфейса. При необходимости можно напрямую изменить конфигурацию JSON в рабочей области. Файлы конфигурации JSON также полезны при развертывании конвейеров в новых средах или при использовании ИНТЕРФЕЙСА командной строки или REST API.

Полный справочник по параметрам конфигурации JSON delta Live Tables см . в конфигурациях конвейера delta Live Tables.

Примечание.

Так как вычислительные ресурсы полностью управляются для бессерверных конвейеров, вычислительные параметры, такие как расширенный автомасштабирование, политики кластера, типы экземпляров и теги кластера недоступны при выборе бессерверных (общедоступная предварительная версия) для конвейера.

Параметры конфигурации по-прежнему можно передавать в бессерверный конвейер, но все параметры, заданные в clusters объекте в конфигурации JSON, игнорируются.

Чтобы узнать о включении конвейеров DLT без сервера, обратитесь к группе учетных записей Azure Databricks.

Выбор выпуска продукта

Выберите выпуск продукта Delta Live Tables с функциями, которые лучше всего подходят для ваших требований к конвейеру. Доступны следующие выпуски продуктов:

  • Core для выполнения рабочих нагрузок приема потоковой передачи. Выберите выпуск, Core если конвейер не требует дополнительных функций, таких как запись измененных данных (CDC) или ожидания разностных динамических таблиц.
  • Pro для выполнения приема потоковой передачи и рабочих нагрузок CDC. Выпуск продукта Pro поддерживает все функции Core, а также рабочие нагрузки, требующие обновления таблиц на основе изменений в исходных данных.
  • Advanced для выполнения рабочих нагрузок приема потоковой передачи, рабочих нагрузок CDC и рабочих нагрузок, требующих ожиданий. Выпуск продукта Advanced поддерживает функции выпусков Core и Pro, а также применение ограничений качества данных с ожиданиями Delta Live Tables.

Выпуск продукта можно выбрать при создании или изменении конвейера. Для каждого конвейера можно выбрать разные выпуски. См. страницу продукта Delta Live Tables.

Примечание.

Если конвейер содержит функции, не поддерживаемые выбранным выпуском продукта, например ожидания, вы получите сообщение об ошибке с причиной ошибки. Затем вы можете изменить конвейер, чтобы выбрать соответствующий выпуск.

Выбор режима конвейера

Конвейер можно обновлять непрерывно или вручную с помощью триггеров вручную на основе режима конвейера. См. статью "Непрерывный и активированный конвейер".

Выбор политики кластера

У пользователей должны быть разрешения на развертывание вычислительных ресурсов для настройки и обновления конвейеров Delta Live Tables. Администраторы рабочей области могут настроить политики кластера для предоставления пользователям доступа к вычислительным ресурсам для разностных динамических таблиц. См. раздел "Определение ограничений" для вычислений конвейера Delta Live Tables.

Примечание.

  • Политики кластера являются необязательными. Обратитесь к администратору рабочей области, если у вас отсутствуют привилегии вычислений, необходимые для разностных динамических таблиц.

  • Чтобы убедиться, что значения политики кластера по умолчанию применяются правильно, задайте apply_policy_default_values значение true в конфигурациях кластера в конфигурации конвейера:

    {
      "clusters": [
        {
          "label": "default",
          "policy_id": "<policy-id>",
          "apply_policy_default_values": true
        }
      ]
    }
    

Настройка библиотек исходного кода

Вы можете использовать селектор файлов в пользовательском интерфейсе разностных динамических таблиц для настройки исходного кода, определяющего конвейер. Исходный код конвейера определяется в записных книжках Databricks или скриптах SQL или Python, хранящихся в файлах рабочей области. При создании или изменении конвейера можно добавить одну или несколько записных книжек или файлов рабочей области или сочетание записных книжек и файлов рабочей области.

Так как разностные динамические таблицы автоматически анализируют зависимости набора данных для создания графа обработки для конвейера, можно добавлять библиотеки исходного кода в любом порядке.

Можно также изменить JSON-файл, чтобы включить исходный код разностных таблиц, определенный в скриптах SQL и Python, хранящихся в файлах рабочей области. В следующем примере содержатся записные книжки и файлы рабочей области:

{
  "name": "Example pipeline 3",
  "storage": "dbfs:/pipeline-examples/storage-location/example3",
  "libraries": [
    { "notebook": { "path": "/example-notebook_1" } },
    { "notebook": { "path": "/example-notebook_2" } },
    { "file": { "path": "/Workspace/Users/<user-name>@databricks.com/Apply_Changes_Into/apply_changes_into.sql" } },
    { "file": { "path": "/Workspace/Users/<user-name>@databricks.com/Apply_Changes_Into/apply_changes_into.py" } }
  ]
}

Указание расположения хранилища

Можно указать расположение хранилища для конвейера, который публикуется в хранилище метаданных Hive. Основная мотивация указания расположения — управлять расположением хранилища объектов для данных, записанных конвейером.

Так как все таблицы, данные, проверка точки и метаданные для конвейеров Delta Live Tables полностью управляются разностными динамическими таблицами, большинство взаимодействий с наборами данных Delta Live Tables происходит через таблицы, зарегистрированные в хранилище метаданных Hive или каталог Unity.

Указание целевой схемы для выходных таблиц конвейера

В то время как необязательно, необходимо указать целевой объект для публикации таблиц, созданных конвейером в любое время, когда вы переходите за рамки разработки и тестирования для нового конвейера. Публикация конвейера в целевой объект делает наборы данных доступными для запроса в другом месте среды Azure Databricks. Сведения о публикации данных из конвейеров Delta Live Tables в хранилище метаданных Hive или использование каталога Unity с конвейерами Delta Live Tables.

Настройка параметров вычислений

Примечание.

Так как вычислительные ресурсы полностью управляются для бессерверных конвейеров, параметры вычислений недоступны при выборе бессерверных (общедоступная предварительная версия) для конвейера.

Каждый конвейер разностных динамических таблиц имеет два связанных кластера:

  • Кластер updates обрабатывает обновления конвейера.
  • Кластер maintenance выполняет задачи ежедневного обслуживания.

Конфигурация, используемая этими кластерами, определяется атрибутом, clusters указанным в параметрах конвейера.

Вы можете добавить параметры вычислений, которые применяются только к конкретному типу кластера с помощью меток кластера. При настройке кластеров конвейеров можно использовать три метки:

Примечание.

Параметр метки кластера может быть опущен, если вы определяете только одну конфигурацию кластера. Метка default применяется к конфигурациям кластера, если не указан параметр метки. Параметр метки кластера требуется только в том случае, если необходимо настроить параметры для разных типов кластеров.

  • Метка default определяет параметры вычислений для применения как к кластерам, так updates и maintenance к кластерам. Применение одинаковых параметров к обоим кластерам повышает надежность выполнения обслуживания, обеспечивая применение необходимых конфигураций, например учетных данных доступа к данным для расположения хранилища, применяется к кластеру обслуживания.
  • Метка maintenance определяет параметры вычислений, применяемые только к кластеру maintenance . Вы также можете использовать maintenance метку для переопределения параметров, настроенных default меткой.
  • Метка updates определяет параметры, применяемые только к кластеру updates . updates Используйте метку для настройки параметров, которые не должны применяться к кластеруmaintenance.

Параметры, определенные с помощью default меток, updates объединяются для создания окончательной конфигурации кластераupdates. Если один и тот же параметр определен с помощью обоих defaultupdates и меток, параметр, определенный с меткой, переопределяет параметр, определенный updates меткой default .

В следующем примере определяется параметр конфигурации Spark, добавляемый только в конфигурацию кластера updates :

{
  "clusters": [
    {
      "label": "default",
      "autoscale": {
        "min_workers": 1,
        "max_workers": 5,
        "mode": "ENHANCED"
      }
    },
    {
      "label": "updates",
      "spark_conf": {
         "key": "value"
      }
    }
  ]
}

Delta Live Tables предоставляет аналогичные параметры для параметров кластера, как и другие вычислительные ресурсы в Azure Databricks. Как и другие параметры конвейера, можно изменить конфигурацию JSON для кластеров, чтобы указать параметры, которые отсутствуют в пользовательском интерфейсе. См. раздел " Вычисления".

Примечание.

Выбор типов экземпляров для запуска конвейера

По умолчанию Delta Live Tables выбирает типы экземпляров для узлов драйвера и рабочих узлов, которые выполняют конвейер, но также можно вручную настроить типы экземпляров. Например, может потребоваться выбрать типы экземпляров, чтобы повысить производительность конвейера или устранить проблемы с памятью при запуске конвейера. Можно настроить типы экземпляров при создании или изменении конвейера с помощью REST API или в пользовательском интерфейсе Delta Live Tables.

Чтобы настроить типы экземпляров при создании или изменении конвейера в пользовательском интерфейсе разностных динамических таблиц:

  1. Нажмите кнопку Параметры .
  2. В разделе "Дополнительно" параметров конвейера в раскрывающихся меню "Рабочий тип" и "Драйвер" выберите типы экземпляров для конвейера.

Чтобы настроить типы экземпляров в параметрах JSON конвейера, нажмите кнопку JSON и введите конфигурации типов экземпляра в конфигурации кластера:

Примечание.

Чтобы избежать назначения ненужных ресурсов maintenance кластеру, в этом примере метка используется updates для задания типов экземпляров только updates для кластера. Чтобы назначить типы экземпляров обоим updatesmaintenance кластерам, используйте default метку или опустите параметр метки. Метка default применяется к конфигурациям кластера конвейера, если не указан параметр метки. См. раздел "Настройка параметров вычислений".

{
  "clusters": [
    {
      "label": "updates",
      "node_type_id": "Standard_D12_v2",
      "driver_node_type_id": "Standard_D3_v2",
      "..." : "..."
    }
  ]
}

Использование автомасштабирования для повышения эффективности и уменьшения использования ресурсов

Используйте расширенный автомасштабирование для оптимизации использования кластеров конвейеров. Расширенный автомасштабирование добавляет дополнительные ресурсы только в том случае, если система определяет, что эти ресурсы увеличивают скорость обработки конвейера. Ресурсы освобождаются, если они больше не нужны, и кластеры завершаются сразу после завершения всех обновлений конвейера.

Дополнительные сведения о расширенном автомасштабировании, включая сведения о конфигурации, см. в статье "Оптимизация использования кластеров конвейеров Delta Live Tables с расширенным автомасштабированием".

Задержка завершения работы вычислений

Так как кластер разностных динамических таблиц автоматически завершает работу, когда не используется, ссылка на политику кластера, задающую параметр autotermination_minutes в конфигурации кластера, приводит к ошибке. Для управления поведением завершения работы кластера можно использовать режим разработки или рабочей среды или использовать pipelines.clusterShutdown.delay параметр в конфигурации конвейера. В следующем примере значение pipelines.clusterShutdown.delay устанавливается равным 60 секундам:

{
    "configuration": {
      "pipelines.clusterShutdown.delay": "60s"
    }
}

Если режим production включен, значение pipelines.clusterShutdown.delay по умолчанию составляет 0 seconds. Если режим development включен, значение по умолчанию составляет 2 hours.

Создание кластера с одним узлом

Если для num_workers задано значение 0 в параметрах кластера, кластер будет создан как кластер с одним узлом. При настройке кластера автомасштабирования и установке для min_workers и max_workers значений 0 также будет создан кластер с одним узлом.

Если настроить кластер автомасштабирования и задать только для min_workers значение 0, кластер не будет создан как кластер с одним узлом. У кластера всегда есть по крайней мере одна активная рабочую роль, пока он не будет остановлен.

Пример конфигурации кластера для создания кластера с одним узлом в Delta Live Tables:

{
    "clusters": [
      {
        "num_workers": 0
      }
    ]
}

Настройка тегов кластера

С помощью тегов кластера можно выполнять мониторинг использования кластеров конвейеров. Добавление тегов кластера в пользовательский интерфейс таблиц Delta Live Tables при создании или изменении конвейера или редактировании параметров JSON для кластеров конвейеров.

Конфигурация облачного хранилища

Чтобы получить доступ к хранилищу Azure, необходимо настроить необходимые параметры, включая маркеры доступа, с помощью spark.conf параметров в конфигурациях кластера. Пример настройки доступа к учетной записи хранения Azure Data Lake Storage 2-го поколения (ADLS 2-го поколения) см. в статье "Безопасный доступ к учетным данным хранилища с секретами в конвейере".

Параметризация конвейеров

Код Python и SQL, который определяет наборы данных, может быть параметризован с помощью настроек конвейера. Параметризация позволяет задействовать следующие варианты использования:

  • Выделение из кода длинных путей и других переменных.
  • Сокращение объема данных, обработанных в средах разработки или промежуточной среды, чтобы ускорить тестирование.
  • Повторное использование логики преобразования для обработки содержимого нескольких источников данных.

В следующем примере используется значение конфигурации startDate, ограничивающее конвейер разработки определенным подмножеством входных данных:

CREATE OR REFRESH LIVE TABLE customer_events
AS SELECT * FROM sourceTable WHERE date > '${mypipeline.startDate}';
@dlt.table
def customer_events():
  start_date = spark.conf.get("mypipeline.startDate")
  return read("sourceTable").where(col("date") > start_date)
{
  "name": "Data Ingest - DEV",
  "configuration": {
    "mypipeline.startDate": "2021-01-02"
  }
}
{
  "name": "Data Ingest - PROD",
  "configuration": {
    "mypipeline.startDate": "2010-01-02"
  }
}

Интервал срабатывания конвейеров

С помощью pipelines.trigger.interval вы можете управлять интервалом триггера для потока обновления одной таблицы или всем конвейером. Так как триггерный конвейер обрабатывает каждую таблицу только один раз, pipelines.trigger.interval он используется только с непрерывными конвейерами.

Databricks рекомендует настраивать pipelines.trigger.interval на уровне отдельных таблиц из-за того, что для потоковой передачи и пакетных запросов используются разные параметры по умолчанию. Задавайте это значение для всего конвейера только в том случае, если для вашего сценария обработки требуется контроль обновлений всего графа конвейера.

Для таблицы можно задать pipelines.trigger.interval с помощью spark_conf в Python или SET в SQL:

@dlt.table(
  spark_conf={"pipelines.trigger.interval" : "10 seconds"}
)
def <function-name>():
    return (<query>)
SET pipelines.trigger.interval=10 seconds;

CREATE OR REFRESH LIVE TABLE TABLE_NAME
AS SELECT ...

Чтобы задать pipelines.trigger.interval для конвейера, добавьте этот параметр в объект configuration параметров конвейера:

{
  "configuration": {
    "pipelines.trigger.interval": "10 seconds"
  }
}

Разрешить пользователям без администратора просматривать журналы драйверов из конвейера с поддержкой каталога Unity

По умолчанию только администраторы конвейера и администраторы рабочей области имеют разрешение на просмотр журналов драйверов из кластера, на котором выполняется конвейер с поддержкой каталога Unity. Вы можете включить доступ к журналам драйверов для любого пользователя с разрешениями CAN MANAGE, CAN VIEW или CAN RUN, добавив следующий параметр конфигурации Spark в configuration объект в параметрах конвейера:

{
  "configuration": {
    "spark.databricks.acl.needAdminPermissionToViewLogs": "false"
  }
}

Добавление Уведомления по электронной почте для событий конвейера

Вы можете настроить один или несколько адресов электронной почты для получения уведомлений, когда происходит следующее:

  • Обновление конвейера успешно завершено.
  • Обновление конвейера завершается сбоем либо с повторным повтором, либо с ошибкой, не допускающей повторных попыток. Выберите этот параметр, чтобы получить уведомление обо всех сбоях конвейера.
  • Обновление конвейера завершается ошибкой без повторных попыток (неустранимая). Выберите этот параметр, чтобы получить уведомление только в том случае, если возникает ошибка без повторных попыток.
  • Сбой одного потока данных.

Чтобы настроить Уведомления по электронной почте при создании или изменении конвейера:

  1. Нажмите кнопку "Добавить уведомление".
  2. Введите один или несколько адресов электронной почты для получения уведомлений.
  3. Щелкните поле проверка для каждого типа уведомления, чтобы отправить на настроенные адреса электронной почты.
  4. Нажмите кнопку "Добавить уведомление".

Управление контрольным камнем для запросов типа 1 SCD

Следующие параметры можно использовать для управления поведением управления могилами для DELETE событий во время обработки SCD типа 1:

  • pipelines.applyChanges.tombstoneGCThresholdInSeconds: задайте это значение для сопоставления максимального ожидаемого интервала в секундах между данными вне порядка. Значение по умолчанию — 172800 секунд (2 дня).
  • pipelines.applyChanges.tombstoneGCFrequencyInSeconds: этот параметр определяет частоту очистки в секундах, проверка для очистки. Значение по умолчанию — 1800 секунд (30 минут).

См . упрощенную запись данных об изменениях с помощью API APPLY CHANGES в Delta Live Tables.

Настройка прав доступа к конвейеру

Для управления разрешениями на него необходимо иметь CAN MANAGE или IS OWNER разрешение на конвейер.

  1. На боковой панели щелкните Delta Live Tables.

  2. Выберите имя конвейера.

  3. Щелкните меню Вертикальный многоточиекебаб и выберите "Разрешения".

  4. В меню "Разрешения" Параметры выберите пользователя, группу или субъект-службу... и выберите пользователя, группу или субъект-службу.

    Диалоговое окно

  5. Выберите разрешение в раскрывающемся меню разрешений.

  6. Нажмите кнопку Добавить.

  7. Нажмите кнопку Сохранить.

Включение хранилища состояний RocksDB для разностных динамических таблиц

Вы можете включить управление состоянием на основе RocksDB, задав следующую конфигурацию перед развертыванием конвейера:

{
  "configuration": {
     "spark.sql.streaming.stateStore.providerClass": "com.databricks.sql.streaming.state.RocksDBStateStoreProvider"
  }
}

Дополнительные сведения о хранилище состояний RocksDB, включая рекомендации по настройке Для RocksDB, см. в статье Настройка хранилища состояний RocksDB в Azure Databricks.