Поделиться через


Использование каталога Unity со структурированной потоковой передачей

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

Какие функции структурированной потоковой передачи поддерживают каталог Unity?

Каталог Unity не добавляет явных ограничений для источников и приемников структурированной потоковой передачи, доступных в Azure Databricks. Модель управления данными каталога Unity позволяет передавать данные из управляемых и внешних таблиц в каталоге Unity. Вы также можете использовать внешние расположения, управляемые каталогом Unity, для взаимодействия с данными с помощью URI объектного хранилища. Вы можете записывать данные во внешние таблицы с помощью имен таблиц или путей к файлам. Необходимо взаимодействовать с управляемыми таблицами в каталоге Unity с помощью имени таблицы.

Используйте внешние расположения, управляемые каталогом Unity, при указании путей для контрольных точек структурированной потоковой передачи. Дополнительные сведения о безопасном подключении хранилища к каталогу Unity см. в статье "Подключение к облачному хранилищу объектов и службам с помощью каталога Unity".

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

Сквозная демонстрация с помощью структурированной потоковой передачи в каталоге Unity см. в руководстве по запуску сквозного конвейера аналитики lakehouse.

Какие функции структурированной потоковой передачи не поддерживаются в каталоге Unity?

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

Чтение представления каталога Unity в виде потока

Внимание

Эта функция предоставляется в режиме общедоступной предварительной версии.

В Databricks Runtime 14.1 и выше можно использовать структурированную потоковую передачу для выполнения потоковых операций чтения из представлений, зарегистрированных в каталоге Unity. Azure Databricks поддерживает только потоковое чтение из представлений, определенных в таблицах Delta.

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

df = (spark.readStream
  .table("demoView")
)

Пользователи должны иметь SELECT привилегии в целевом представлении.

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

При настройке потоковых операций чтения для представлений поддерживаются следующие параметры:

  • maxFilesPerTrigger
  • maxBytesPerTrigger
  • ignoreDeletes
  • skipChangeCommits
  • withEventTimeOrder
  • startingTimestamp
  • startingVersion

Средство чтения потоковой передачи применяет эти параметры к файлам и метаданным, определяющим базовые таблицы Delta.

Внимание

Операции чтения по представлениям, определенным без UNION ALL поддержки параметров withEventTimeOrder и startingVersion.

Поддерживаемые операции в исходных представлениях

Не все представления поддерживают потоковое чтение. Неподдерживаемые операции в исходных представлениях включают агрегаты и сортировку.

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

  • Проект

    • Описание. Управление разрешениями на уровне столбцов

    • Оператор: SELECT... FROM...

    • Пример инструкции :

      CREATE VIEW project_view AS
      SELECT id, value
      FROM source_table
      
  • Фильтр

    • Описание. Управление разрешениями на уровне строк

    • Оператор: WHERE...

    • Пример инструкции :

      CREATE VIEW filter_view AS
      SELECT * FROM source_table
      WHERE value > 100
      
  • Объединение всех

    • Описание: Результаты из нескольких таблиц

    • Оператор: UNION ALL

    • Пример инструкции :

      CREATE VIEW union_view AS
      SELECT id, value FROM source_table1
      UNION ALL
      SELECT * FROM source_table2
      

Примечание.

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

Ограничения

Действительны следующие ограничения.

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

  • Необходимо зарегистрировать представления в каталоге Unity.

  • Следующее исключение отображается, если поток из представления с неподдерживаемым оператором:

    UnsupportedOperationException: [UNEXPECTED_OPERATOR_IN_STREAMING_VIEW] Unexpected operator <operator> in the CREATE VIEW statement as a streaming source. A streaming view query must consist only of SELECT, WHERE, and UNION ALL operations.
    
  • Если указать неподдерживаемые параметры, отобразится следующее исключение:

    AnalysisException: [UNSUPPORTED_STREAMING_OPTIONS_FOR_VIEW.UNSUPPORTED_OPTION] Unsupported for streaming a view. Reason: option <option> is not supported.