Share via


Uso de Unity Catalog con las canalizaciones de Delta Live Tables

Importante

La compatibilidad con Delta Live Tables para Unity Catalog está en versión preliminar pública.

Además del soporte existente para la persistencia de tablas en el metastore Hive, puedes utilizar Unity Catalog con tus pipelines Delta Live Tables para:

  • Defina un catálogo en el catálogo de Unity donde la canalización conservará las tablas.
  • Lee datos de tablas de Catálogo de Unity.

El área de trabajo puede contener canalizaciones que usan el catálogo de Unity o el metastore de Hive. Sin embargo, una sola canalización no puede escribir tanto en el metastore de Hive como en el catálogo de Unity y en las canalizaciones existentes no se puede actualizar para usar el catálogo de Unity. Las canalizaciones existentes que no usan el catálogo de Unity no se ven afectadas por esta versión preliminar y seguirán conservando los datos en el metastore de Hive mediante la ubicación de almacenamiento configurada.

A menos que se especifique lo contrario en este documento, todos los orígenes de datos existentes y la funcionalidad de Delta Live Tables se admiten con canalizaciones que usan el catálogo de Unity. Las interfaces de Python y SQL se admiten con canalizaciones que usan el catálogo de Unity.

Las tablas creadas en la canalización también se pueden consultar desde clústeres compartidos de Unity Catalog mediante Databricks Runtime 13.3 LTS y versiones superiores o un SQL warehouse. Las tablas no se pueden consultar desde clústeres de aislamiento asignados o sin aislamiento.

Para administrar permisos en las tablas creadas por una canalización de Catálogo de Unity, use GRANT y REVOKE.

Requisitos

Los siguientes son necesarios para crear tablas en el catálogo de Unity desde una canalización de Delta Live Tables:

  • Debe tener USE CATALOG privilegios en el catálogo de destino.
  • Debe tener CREATE MATERIALIZED VIEW privilegios y USE SCHEMA en el esquema de destino si la canalización crea vistas materializadas.
  • Debe tener privilegios CREATE TABLE y USE SCHEMA en el esquema de destino si la canalización crea tablas materializadas.
  • Si no se especifica un esquema de destino en la configuración de canalización, debe tener CREATE MATERIALIZED VIEW o CREATE TABLE privilegios en al menos un esquema del catálogo de destino.

Limitaciones

A continuación se muestran limitaciones al usar el catálogo de Unity con Delta Live Tables:

  • De forma predeterminada, solo el propietario de la canalización y los administradores del área de trabajo tienen permiso para ver los registros de controladores del clúster que ejecuta una canalización habilitada para Unity Catalog. Para habilitar el acceso para que otros usuarios vean los registros de controladores, consulte Permitir a los usuarios que no son administradores ver los registros de controladores desde una canalización habilitada para Unity Catalog.

  • Las canalizaciones existentes que usan el metastore de Hive no se pueden actualizar para usar el catálogo de Unity. Para migrar una canalización existente que escribe en metastore de Hive, debe crear una nueva canalización y volver a ingerir datos de los orígenes de datos.

  • No se puede crear una canalización habilitada para catálogos de Unity en un área de trabajo asociada a una tienda de metadatos creada durante la versión preliminar pública del catálogo de Unity. Consulte Actualización a la herencia de privilegios.

  • No se admiten bibliotecas de terceros ni JAR.

  • No se admiten las consultas del lenguaje de manipulación de datos (DML) que modifican el esquema de una tabla de streaming.

  • Una vista materializada creada en una canalización de Delta Live Tables no se puede usar como origen de streaming fuera de esa canalización, por ejemplo, en otra canalización o en un cuaderno de bajada.

  • La publicación en esquemas que especifican una ubicación de almacenamiento administrada solo es compatible en el canal de versión preliminar.

  • Si una canalización se publica en un esquema con una ubicación de almacenamiento administrada, el esquema se puede cambiar en una actualización posterior, pero solo si el esquema actualizado usa la misma ubicación de almacenamiento que el esquema especificado anteriormente.

  • Si el esquema de destino especifica una ubicación de almacenamiento, todas las tablas se almacenan allí. Si no se especifica una ubicación de almacenamiento de esquema, las tablas se almacenan en la ubicación de almacenamiento del catálogo si el catálogo de destino especifica uno. Si no se especifican ubicaciones de almacenamiento de esquema y catálogo, las tablas se almacenan en la ubicación de almacenamiento raíz del metastore donde se publican las tablas.

  • La pestaña Historial de Catalog Explorer no muestra el historial de tablas de streaming y vistas materializadas.

  • La propiedad LOCATION no se admite al definir una tabla.

  • Las canalizaciones habilitadas para el catálogo de Unity no se pueden publicar en el metastore de Hive.

  • La compatibilidad con UDF de Python está en versión preliminar pública. Para usar UDF de Python, la canalización debe usar el canal de vista previa.

  • No puede usar Delta Sharing con una vista materializada de Delta Live Tables o una tabla de streaming publicada en el catálogo de Unity.

  • No se puede usar la event_logfunción con valores de tabla en una canalización o consulta para acceder a los registros de eventos de varias canalizaciones.

  • No se puede compartir una vista creada a través de la event_logfunción con valores de tabla con otros usuarios.

  • Los clústeres de un solo nodo no se admiten con canalizaciones habilitadas para el catálogo de Unity. Dado que Delta Live Tables podría crear un clúster de un solo nodo para ejecutar canalizaciones más pequeñas, es posible que se produzca un error en la canalización con un mensaje de error que haga referencia a single-node mode. Si esto ocurre, asegúrese de especificar al menos un trabajo al configurar los valores de proceso.

  • Las tablas creadas en una canalización habilitada para el catálogo de Unity no se pueden consultar desde clústeres de aislamiento asignados o sin aislamiento. Para consultar tablas creadas por una canalización de Delta Live Tables, debe usar un clúster de modo de acceso compartido mediante Databricks Runtime 13.3 LTS y versiones posteriores o una instancia de SQL Warehouse.

  • Delta Live Tables usa un clúster de modo de acceso compartido para ejecutar una canalización habilitada para catálogos de Unity. Una canalización habilitada para el catálogo de Unity no se puede ejecutar en un clúster asignado. Para obtener información sobre las limitaciones del modo de acceso compartido con el catálogo de Unity, consulte Limitaciones del modo de acceso compartido en el catálogo de Unity.

  • No puede usar filtros de fila ni máscaras de columna con vistas materializadas ni tablas de streaming publicadas en Unity Catalog.

Nota:

Los archivos subyacentes que admiten vistas materializadas pueden incluir datos de tablas ascendentes (incluida la posible información de identificación personal) que no aparecen en la definición de vista materializada. Estos datos se agregan automáticamente al almacenamiento subyacente para admitir la actualización incremental de las vistas materializadas.

Dado que los archivos subyacentes de una vista materializada podrían arriesgarse a exponer datos de tablas ascendentes que no forman parte del esquema de la vista materializada, Databricks recomienda no compartir el almacenamiento subyacente con consumidores descendentes que no son de confianza.

Por ejemplo, supongamos que la definición de una vista materializada incluye una cláusula COUNT(DISTINCT field_a). Aunque la definición de vista materializada solo incluye la cláusula de agregado COUNT DISTINCT, los archivos subyacentes contendrán una lista de los valores reales de field_a.

Cambios en la funcionalidad existente

Cuando Delta Live Tables está configurado para conservar datos en unity Catalog, la canalización Delta Live Tables administra el ciclo de vida de la tabla. Dado que la canalización administra el ciclo de vida y los permisos de la tabla:

  • Cuando se quita una tabla de la definición de canalización delta Live Tables, la entrada de tabla materializada o vista materializada correspondiente se quita de Unity Catalog en la siguiente actualización de canalización. Los datos reales se conservan durante un período de tiempo para que se pueda recuperar si se eliminó por error. Los datos se pueden recuperar agregando la vista materializada o la tabla de streaming a la definición de la canalización.
  • La eliminación de la canalización Delta Live Tables da como resultado la eliminación de todas las tablas definidas en esa canalización. Debido a este cambio, la interfaz de usuario de Delta Live Tables se actualiza para solicitarle que confirme la eliminación de una canalización.
  • Las tablas internas de respaldo, incluidas las tablas de respaldo utilizadas para respaldar APPLY CHANGES INTO, no son accesibles directamente por los usuarios.

Escritura de tablas en Unity Catalog desde una canalización de Delta Live Tables

Nota:

Si no selecciona un catálogo y un esquema de destino para una canalización, las tablas no se publican en el catálogo de Unity y solo las consultas de la misma canalización pueden acceder a ellas.

Para escribir las tablas en el catálogo de Unity, al cree una canalización, seleccione Catálogo de Unity en Opciones de almacenamiento, seleccione un catálogo en el menú desplegable Catálogo de y seleccione un esquema existente o escriba el nombre de un nuevo esquema en el menú desplegable Esquema de destino. Para obtener información sobre los catálogos de Unity Catalog, consulte Catálogos. Para obtener información sobre los esquemas en Unity Catalog, consulte Esquemas.

Ingesta de datos en una canalización de Unity Catalog

La canalización configurada para usar El catálogo de Unity puede leer datos de:

  • Tablas administradas y externas de Unity Catalog, vistas, vistas materializadas y tablas de streaming.
  • Tablas y vistas de metastore de Hive.
  • Cargador automático mediante la cloud_files() función para leer desde ubicaciones externas del catálogo de Unity.
  • Apache Kafka y Amazon Kinesis.

A continuación se muestran ejemplos de lectura de tablas de catálogo de Unity y metastore de Hive.

Ingesta por lotes desde una tabla de catálogo de Unity

SQL

CREATE OR REFRESH LIVE TABLE
  table_name
AS SELECT
  *
FROM
  my_catalog.my_schema.table1;

Python

@dlt.table
def table_name():
  return spark.table("my_catalog.my_schema.table")

Transmisión de cambios desde una tabla de Catálogo de Unity

SQL

CREATE OR REFRESH STREAMING TABLE
  table_name
AS SELECT
  *
FROM
  STREAM(my_catalog.my_schema.table1);

Python

@dlt.table
def table_name():
  return spark.readStream.table("my_catalog.my_schema.table")

Ingesta de datos del metastore de Hive

Una canalización que usa Unity Catalog puede leer datos de tablas de metastore de Hive mediante el hive_metastore catálogo:

SQL

CREATE OR REFRESH LIVE TABLE
  table_name
AS SELECT
  *
FROM
  hive_metastore.some_schema.table;

Python

@dlt.table
def table3():
  return spark.table("hive_metastore.some_schema.table")

Ingesta de datos del cargador automático

SQL

CREATE OR REFRESH STREAMING TABLE
  table_name
AS SELECT
  *
FROM
  cloud_files(
    <path-to-uc-external-location>,
    "json"
  )

Python

@dlt.table(table_properties={"quality": "bronze"})
def table_name():
  return (
     spark.readStream.format("cloudFiles")
     .option("cloudFiles.format", "json")
     .load(f"{path_to_uc_external_location}")
 )

Compartir vistas materializadas (tablas dinámicas)

De forma predeterminada, solo el propietario de la canalización puede consultar las tablas creadas por una canalización. Puede conceder a otros usuarios la capacidad de consultar una tabla mediante instrucciones GRANT y puede revocar el acceso de consulta mediante instrucciones REVOKE. Para obtener más información sobre el modelo de permisos y privilegios del catálogo de Unity, consulte Administrar privilegios en el catálogo de Unity.

Conceder selección en una tabla

GRANT SELECT ON TABLE
  my_catalog.my_schema.live_table
TO
  `user@databricks.com`

Revocar selección en una tabla

REVOKE SELECT ON TABLE
  my_catalog.my_schema.live_table
FROM
  `user@databricks.com`

Concesión de privilegios de vista materializada o creación de una tabla de creación

GRANT CREATE { MATERIALIZED VIEW | TABLE } ON SCHEMA
  my_catalog.my_schema
TO
  { principal | user }

Visualización del linaje de una canalización

El linaje de las tablas de una canalización de Delta Live Tables es visible en Catalog Explorer. Para las vistas materializadas o las tablas de streaming en una canalización habilitada para Unity Catalog, la interfaz de usuario del linaje de Catalog Explorer muestra las tablas ascendentes y descendentes. Para obtener más información sobre el linaje del Unity Catalog, vea Captura y visualización del linaje de datos mediante Unity Catalog.

Para una vista materializada o una tabla de streaming en una canalización de Delta Live Tables habilitada para Unity Catalog, la interfaz de usuario del linaje de Catalog Explorer también se vinculará a la canalización que produjo la vista materializada o la tabla de streaming si la canalización es accesible desde el área de trabajo actual.

Agregar, cambiar o eliminar datos en una tabla de streaming

Puede usar instrucciones del lenguaje de manipulación de datos (DML), incluidas las instrucciones insert, update, delete y merge, para modificar las tablas de streaming publicadas en Unity Catalog. La compatibilidad con consultas DML en tablas de streaming permite casos de uso como actualizar tablas para el cumplimiento del Reglamento general de protección de datos (RGPD).

Nota:

  • No se admiten instrucciones DML que modifican el esquema de tabla de una tabla de streaming. Asegúrese de que las instrucciones DML no intenten evolucionar el esquema de la tabla.
  • Las instrucciones DML que actualizan una tabla de streaming solo se pueden ejecutar en un clúster compartido de Unity Catalog o en un almacenamiento de SQL mediante Databricks Runtime 13.3 LTS y versiones posteriores.
  • Dado que el streaming requiere orígenes de datos de solo anexión, si el procesamiento requiere streaming desde una tabla de streaming de origen con cambios (por ejemplo, por instrucciones de DML), establezca la marca skipChangeCommits al leer la tabla de streaming de origen. Cuando se establezca skipChangeCommits, se omitirán las transacciones que eliminen o modifiquen registros de la tabla de origen. Si el procesamiento no requiere una tabla de streaming, puede usar una vista materializada (que no tiene la restricción de solo anexión) como tabla de destino.

A continuación se muestran ejemplos de instrucciones DML para modificar registros en una tabla de streaming.

Elimine los registros con un identificador específico:

DELETE FROM my_streaming_table WHERE id = 123;

Actualice los registros con un identificador específico:

UPDATE my_streaming_table SET name = 'Jane Doe' WHERE id = 123;