Compartir a través de


Uso de Unity Catalog con Structured Streaming

Use Structured Streaming con Unity Catalog para administrar la gobernanza de datos para las cargas de trabajo incrementales y de streaming en Azure Databricks. En este documento se describe la funcionalidad soportada y sugiere los procedimientos recomendados para utilizar conjuntamente Unity Catalog y Structured Streaming.

¿Qué funcionalidad de Structured Streaming admite Unity Catalog?

Unity Catalog no agrega ningún límite explícito para orígenes y receptores de Structured Streaming que están disponibles en Azure Databricks. El modelo de gobernanza de datos de Unity Catalog permite transmitir datos de tablas administradas y externas en Unity Catalog. También puede usar ubicaciones externas que administre Unity Catalog para interactuar con los datos mediante los URI de almacenamiento de objetos. Puede escribir en tablas externas mediante nombres de tablas o rutas de acceso de archivo. Debe interactuar con tablas administradas en Unity Catalog utilizando el nombre de la tabla.

Use ubicaciones externas que administre Unity Catalog cuando especifique rutas de acceso para los puntos de control de Structured Streaming. Para más información sobre cómo conectar de forma segura el almacenamiento con el catálogo de Unity, consulte Conexión al almacenamiento y servicios de objetos en la nube mediante el catálogo de Unity.

La compatibilidad con la función de Structured Streaming difiere en función de la versión de Databricks Runtime que esté ejecutando y de si está utilizando el modo de acceso de clúster asignado o compartido. Para obtener más detalles, consulte Limitaciones de streaming para Unity Catalog.

Para obtener una demostración de un extremo a otro mediante Structured Streaming en Unity Catalog, consulte el tutorial sobre cómo ejecutar una canalización de análisis de almacén de lago de un extremo a otro.

¿Qué funciones de Structured Streaming no son compatibles con Unity Catalog?

Para obtener una lista de las características de flujo estructurado que no se admiten en Unity Catalog, consulte Limitaciones de streaming para Unity Catalog.

Leer una vista de catálogo de Unity como una secuencia

Importante

Esta característica está en versión preliminar pública.

En Databricks Runtime 14.1 y versiones posteriores, es posible usar Structured Streaming para realizar lecturas de streaming de vistas registradas con el catálogo de Unity. Azure Databricks solo admite lecturas de streaming de vistas definidas en tablas Delta.

Para leer una vista con Flujo estructurado, proporcione el identificador de la vista al método .table() como en el ejemplo siguiente:

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

Los usuarios deben tener privilegios de SELECT en la vista de destino.

Opciones admitidas para configurar lecturas de streaming en vistas

Se admiten las siguientes opciones al configurar lecturas de streaming en vistas:

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

El lector de streaming aplica estas opciones a los archivos y metadatos que definen las tablas Delta subyacentes.

Importante

Las lecturas en vistas definidas con UNION ALL no admiten las opciones withEventTimeOrder y startingVersion.

Operaciones admitidas en vistas de origen

No todas las vistas admiten lecturas de streaming. Las operaciones no admitidas en vistas de origen incluyen las agregaciones y las ordenaciones.

En la lista siguiente, se proporcionan descripciones y definiciones de vista de ejemplo para las operaciones admitidas:

  • Proyecto

    • Descripción: controla los permisos de nivel de columna

    • Operador: SELECT... FROM...

    • Instrucción de ejemplo:

      CREATE VIEW project_view AS
      SELECT id, value
      FROM source_table
      
  • Filter

    • Descripción: controla los permisos de nivel de fila

    • Operador: WHERE...

    • Instrucción de ejemplo:

      CREATE VIEW filter_view AS
      SELECT * FROM source_table
      WHERE value > 100
      
  • Unión de todo

    • Descripción: resultados de varias tablas

    • Operador: UNION ALL

    • Instrucción de ejemplo:

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

Nota:

No se puede modificar la definición de vista para agregar ni cambiar las tablas a las que se haga referencia en la vista y usar el mismo punto de control de streaming.

Limitaciones

Se aplican las siguientes limitaciones:

  • Solo se puede transmitir desde vistas respaldadas por tablas Delta. No se admiten las vistas definidas en otros orígenes de datos.

  • Se deben registrar vistas con el catálogo de Unity.

  • La siguiente excepción muestra si transmite desde una vista con un operador no admitido:

    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.
    
  • La siguiente excepción se muestra si proporciona opciones no admitidas:

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