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.
Databricks recomienda configurar canalizaciones de Delta Live Tables con Unity Catalog.
Las canalizaciones configuradas con el catálogo de Unity publican todas las vistas materializadas definidas y las tablas de streaming en el catálogo y el esquema especificados. Las canalizaciones del catálogo de Unity pueden leerse de otras tablas y volúmenes de Catálogo de Unity.
Para administrar permisos en las tablas creadas por una canalización de Catálogo de Unity, use GRANT y REVOKE.
Requisitos
Permisos necesarios para crear tablas en el catálogo de Unity desde una canalización de Delta Live Tables:
USE CATALOG
privilegios en el catálogo de destino.CREATE MATERIALIZED VIEW
yUSE SCHEMA
privilegios en el esquema de destino si la canalización crea vistas materializadas.CREATE TABLE
yUSE SCHEMA
privilegios en el esquema de destino si la canalización crea tablas de streaming.- Si no se especifica un esquema de destino en la configuración de canalización, debe tener
CREATE MATERIALIZED VIEW
oCREATE TABLE
privilegios en al menos un esquema del catálogo de destino.
Proceso necesario para ejecutar una canalización habilitada para el catálogo de Unity:
- Clústeres de modo de acceso compartido. Una canalización habilitada para catálogos de Unity no se puede ejecutar en un único clúster de usuario ("asignado"). Consulte Limitaciones del modo de acceso compartido en el catálogo de Unity.
Proceso necesario para consultar las tablas creadas por una canalización de Delta Live Tables mediante el Catálogo de Unity (incluidas las tablas de streaming y las vistas materializadas) incluye cualquiera de las siguientes opciones:
Almacenes de SQL
Clústeres de modo de acceso compartido en Databricks Runtime 13.3 LTS o superior.
Clústeres de modo de acceso de usuario único (o "asignado"), si el control de acceso específico está habilitado en el clúster de usuario único (es decir, el clúster se ejecuta en Databricks Runtime 15.4 o superior y el proceso sin servidor está habilitado para el área de trabajo). Para obtener más información, consulte Control de acceso específico sobre el proceso de un solo usuario.
Clústeres de modo de acceso de usuario único (o "asignados") en 13.3 LTS a 15.3, solo si el propietario de la tabla ejecuta la consulta.
Se aplican limitaciones de proceso adicionales. Consulte la sección siguiente.
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 pueden ver los registros de controladores desde el clúster que ejecuta una canalización habilitada para el catálogo de Unity. Para permitir que otros usuarios accedan a los registros de controladores, consulte Permitir a los usuarios que no son administradores ver los registros de controladores desde una canalización habilitada para catálogo de Unity.
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 un metastore que se creó durante la versión preliminar pública del catálogo de Unity. Consulte Actualización a la herencia de privilegios.
No se admiten los JAR. Solo se admiten bibliotecas de Python de terceros. Consulte Administración de dependencias de Python para canalizaciones de Delta Live Tables.
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.
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.
Las tablas se almacenan en la ubicación de almacenamiento del esquema de destino. 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 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.
La pestaña Historial del Explorador de catálogos no muestra el historial de tablas de streaming ni 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.
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_log
funció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_log
funció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, especifique al menos un trabajo al configurar el proceso. Consulte Configuración del proceso para una canalización de Delta Live Tables.
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 una definición de vista materializada incluye una COUNT(DISTINCT field_a)
cláusula . 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
.
¿Puedo usar las canalizaciones de metastore de Hive y catálogo de Unity juntas?
El área de trabajo puede contener canalizaciones que usan el catálogo de Unity y el metastore de Hive heredado. Sin embargo, una sola canalización no puede escribir en el metastore de Hive y en el catálogo de Unity. Las canalizaciones existentes que escriben en el metastore de Hive no se pueden actualizar para usar el catálogo de Unity.
Las canalizaciones existentes que no usan el catálogo de Unity no se ven afectadas por la creación de nuevas canalizaciones configuradas con el catálogo de Unity. Estas canalizaciones continúan 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.
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 para que se puedan recuperar si se eliminan por error. Los datos se pueden recuperar agregando la vista materializada o >st a la definición de canalización.
- Al eliminar la canalización delta Live Tables, se eliminan 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.
- Los usuarios no pueden acceder directamente a las tablas de respaldo internas, incluidas las que se usan para admitir
APPLY CHANGES INTO
.
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 Unity Catalog, vea ¿Qué son los catálogos en Azure Databricks?. Para obtener información sobre los esquemas en Unity Catalog, vea ¿Qué son los esquemas en Azure Databricks?.
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
read_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 MATERIALIZED VIEW
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 MATERIALIZED VIEW
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
read_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}")
)
Uso compartido de vistas materializadas
De forma predeterminada, solo el propietario de la canalización tiene permiso para consultar los conjuntos de datos creados por la 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.table_name
TO
`user@databricks.com`
Revocar selección en una tabla
REVOKE SELECT ON TABLE
my_catalog.my_schema.table_name
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. La interfaz de usuario de linaje del Explorador de catálogos muestra las tablas ascendentes y descendentes para vistas materializadas o tablas de streaming en una canalización habilitada para catálogos de Unity. 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 instrucciones insert, update, delete y merge, para modificar las tablas de streaming publicadas en el Catálogo de Unity. La compatibilidad con consultas DML en tablas de streaming permite casos de uso como la actualización de 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;
Publicar tablas con filtros de fila y máscaras de columna
Importante
Esta característica está en versión preliminar pública.
Filtros de fila permiten especificar una función que se aplica como filtro cada vez que un recorrido de tabla captura filas. Estos filtros garantizan que las consultas posteriores solo devuelven filas para las que el predicado de filtro se evalúa como true.
Máscaras de columna permiten enmascarar los valores de una columna cada vez que un recorrido de tabla captura filas. Las futuras consultas de esa columna devolverán el resultado de la función evaluada en lugar del valor original de la columna. Para obtener más información sobre el uso de filtros de fila y máscaras de columna, consulte Filtrado de datos confidenciales de tabla mediante filtros de fila y máscaras de columna.
Administración de filtros de fila y máscaras de columna
Los filtros de fila y las máscaras de columna en vistas materializadas y tablas de streaming deben agregarse, actualizarse o quitarse a través de la instrucción CREATE OR REFRESH
.
Para obtener una sintaxis detallada sobre cómo definir tablas con filtros de fila y máscaras de columna, consulte Referencia del lenguaje SQL de Delta Live Tables y Referencia del lenguaje Python de Delta Live Tables.
Comportamiento
A continuación se muestran detalles importantes al usar filtros de fila o máscaras de columna en canalizaciones de Delta Live Tables:
- Actualizar como propietario: Cuando una actualización de canalización actualiza una vista materializada o una tabla de streaming, las funciones de filtro de fila y máscara de columna se ejecutan con los derechos del propietario de la canalización. Esto significa que la actualización de la tabla usa el contexto de seguridad del usuario que creó la canalización. Las funciones que comprueban el contexto del usuario (como
CURRENT_USER
yIS_MEMBER
) se evalúan mediante el contexto de usuario del propietario de la canalización. - Consulta: Al consultar una vista materializada o una tabla de streaming, las funciones que comprueban el contexto del usuario (como
CURRENT_USER
yIS_MEMBER
) se evalúan mediante el contexto de usuario del invocador. Este enfoque aplica controles de acceso y seguridad de datos específicos del usuario en función del contexto del usuario actual. - Al crear vistas materializadas sobre tablas de origen que contienen filtros de fila y máscaras de columna, la actualización de la vista materializada siempre es una actualización completa. Una actualización completa vuelve a procesar todos los datos disponibles en el origen con las definiciones más recientes. Este proceso comprueba que las directivas de seguridad de las tablas de origen se evalúan y se aplican con los datos y definiciones más actualizados.
Observabilidad
Use DESCRIBE EXTENDED
, INFORMATION_SCHEMA
o el Explorador de catálogos para examinar los filtros de fila y las máscaras de columna existentes que se aplican a una vista materializada determinada o a una tabla de streaming. Esta funcionalidad permite a los usuarios auditar y revisar las medidas de acceso y protección de datos en vistas materializadas y tablas de streaming.