Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Las tablas administradas de Unity Catalog son el tipo de tabla predeterminado y recomendado en Azure Databricks para Delta Lake y Apache Iceberg. Unity Catalog administra todas las responsabilidades de lectura, escritura, almacenamiento y optimización. Consulte Convertir tablas externas o ajenas de Delta Lake en tablas gestionadas por Unity Catalog.
Los archivos de datos de las tablas administradas se almacenan en el esquema o catálogo que los contiene. Consulte Especificar una ubicación de almacenamiento administrada en Unity Catalog.
En comparación con las tablas externas y extranjeras , las tablas gestionadas cuestan menos almacenarlas y consultar, se mantienen y optimizan automáticamente, y se mantienen accesibles para clientes externos a través de APIs abiertas.
Puede trabajar con tablas administradas en todos los lenguajes y productos compatibles con Azure Databricks. Necesita ciertos privilegios para crear, actualizar, eliminar o consultar tablas administradas. Consulte Administración de privilegios en Unity Catalog.
Note
En esta página solo se describen las tablas administradas por el catálogo de Unity. Para las tablas administradas en el metastore de Hive heredado, consulte Objetos de base de datos en el metastore de Hive heredado.
Ventajas de las tablas administradas del catálogo de Unity
Las tablas administradas de Unity Catalog optimizan los costos de almacenamiento y las velocidades de consulta, y permiten la interoperabilidad con herramientas de terceros para Delta Lake y Apache Gigabit. Para simplificar la administración y el rendimiento de los datos, estas tablas administradas usan tecnologías con tecnología de inteligencia artificial, como la compactación del tamaño de archivo y la recopilación inteligente de estadísticas.
Las tablas administradas permiten la interoperabilidad al permitir el acceso desde clientes de Delta Lake y Apache Iceberg. Consulta Acceso a datos de Databricks mediante sistemas externos.
Las siguientes características son exclusivas de las tablas administradas de Unity Catalog, y no están disponibles para tablas externas ni tablas remotas:
| Feature | Benefits | Configuración |
|---|---|---|
| Confirmaciones de catálogo | Permite transacciones de múltiples sentencias entre tablas, planificación de consultas más rápida, cambios de esquema y restricciones aplicables, y escrituras seguras desde motores externos. | Desactivada de forma predeterminada. Para activar, establezca la propiedad de la tabla delta.feature.catalogManaged. Consulte Habilitación de confirmaciones de catálogo. |
| Optimización predictiva | Optimiza automáticamente la disposición y el cálculo de datos usando IA, sin operaciones de mantenimiento manual. Databricks recomienda habilitar la optimización predictiva para todas las tablas administradas para reducir los costos de almacenamiento y proceso. | Activado por defecto para cuentas creadas a partir del 11 de noviembre de 2024. Azure Databricks lo está habilitando gradualmente para cuentas existentes. Para configurarlo, consulte Habilitación de la optimización predictiva. |
| Transacciones de varias sentencias | Ejecuta varias sentencias SQL en una o varias tablas en una única confirmación atómica con garantías ACID. Todos los cambios se realizan juntos o se revierten juntos. Úsalo para procedimientos almacenados y scripting SQL. | Desactivada de forma predeterminada. Para elegir un modo de transacción, consulte Modos de transacción. Las operaciones de escritura en tablas de Apache Iceberg gestionadas están en versión preliminar privada. |
| Agrupación automática de líquidos | Para las tablas con optimización predictiva, selecciona y actualiza automáticamente las claves de agrupamiento a medida que cambian los patrones de consulta para mejorar el rendimiento y reducir costes. | Desactivada de forma predeterminada. Para configurarlo, consulte Habilitación de la agrupación en clústeres líquidos. |
| Almacenamiento en caché de metadatos | La caché en memoria de los metadatos de transacciones mejora el rendimiento de las consultas al minimizar las solicitudes al registro de transacciones almacenado en la nube. | Habilitado de forma predeterminada. No se puede configurar. |
| Índices de búsqueda de texto completo | Acelera las búsquedas de subcadenas y palabras clave en columnas de texto mediante las funciones search y isearch. Azure Databricks omite archivos que no pueden contener filas coincidentes, reduciendo la cantidad de datos escaneados. |
Desactivada de forma predeterminada. Cree con CREATE SEARCH INDEX.En Beta. Requiere Databricks Runtime 18.2 o versiones posteriores. |
Eliminación automática de archivos después de un DROP TABLE comando |
Cuando eliminas una tabla gestionada, Azure Databricks elimina los archivos de datos en el almacenamiento en la nube tras expirar el periodo de recuperación (por defecto 7 días), reduciendo los costes de almacenamiento. En el caso de las tablas externas, debe eliminar manualmente los archivos del cubo de almacenamiento. | Habilitado de forma predeterminada. Puede configurar el período de recuperación en el nivel de catálogo o esquema. Consulte Quitar una tabla administrada. |
Acceso a datos de Databricks mediante sistemas externos
Las tablas administradas permiten la interoperabilidad al permitir el acceso desde clientes de Delta Lake y Apache Iceberg.
A través de API abiertas y del suministro de credenciales, Unity Catalog permite que motores externos como Trino, DuckDB, Apache Spark y Daft, así como motores integrados con el catálogo REST de Iceberg, como Dremio, accedan a tablas gestionadas. En el caso de los clientes externos que no admiten API abiertas, puede usar el modo de compatibilidad para leer tablas administradas mediante cualquier cliente delta Lake o Apache Docker. OpenSharing, un protocolo código abierto, permite el uso compartido seguro y regulado de datos con asociados y plataformas externos.
Consulte integraciones para obtener una lista de los motores externos admitidos o compruebe la documentación del motor si no se incluye en esta lista.
Las siguientes API abiertas permiten que los sistemas externos accedan a las tablas administradas del catálogo de Unity:
- La API REST de Unity permite a los clientes de Delta Lake leer, escribir y crear tablas administradas de Delta Lake.
- El catálogo REST de Iceberg (IRC) tiene acceso de lectura, escritura y creación para los clientes de Apache Iceberg a tablas administradas de Apache Iceberg, y acceso de solo lectura a tablas de Delta Lake con la lectura mediante Apache Iceberg habilitada.
Ambas API admiten la distribución de credenciales, que proporciona credenciales temporales con ámbito que heredan los privilegios de la entidad de Azure Databricks que los solicita, manteniendo los controles de gobernanza y seguridad.
OpenSharing es un protocolo código abierto que permite el acceso seguro y regulado a los datos a asociados y plataformas externos. Puede usar OpenSharing para conceder a los asociados acceso temporal y de solo lectura.
Todas las lecturas y escrituras en tablas administradas deben usar nombres de tabla y nombres de catálogo y esquema donde existen. Por ejemplo: catalog_name.schema_name.table_name. No se admite el acceso basado en rutas de acceso a las tablas administradas del catálogo de Unity (excepto en modo de compatibilidad) porque omite los controles de acceso del catálogo de Unity e impide que las características de la tabla administrada funcionen correctamente.
Creación de una tabla administrada
Para crear una tabla administrada, debe tener:
-
USE SCHEMAen el esquema primario de la tabla. -
USE CATALOGen el catálogo primario de la tabla. -
CREATE TABLEen el esquema primario de la tabla.
Use la sintaxis siguiente para crear una tabla administrada vacía. Reemplace los valores de marcador de posición:
-
<catalog-name>: nombre de la base de datos que contendrá la tabla. -
<schema-name>: el nombre del esquema que contiene la tabla. -
<table-name>: Un nombre para la tabla. -
<column-specification>: el nombre y el tipo de datos de cada columna.
SQL
-- Create a managed Delta table
CREATE TABLE <catalog-name>.<schema-name>.<table-name>
(
<column-specification>
);
-- Create a managed Iceberg table
CREATE TABLE <catalog-name>.<schema-name>.<table-name>
(
<column-specification>
)
USING iceberg;
Python
Cree una tabla administrada de Delta Lake mediante saveAsTable():
from pyspark.sql.types import StructType, StructField, StringType
schema = StructType([StructField("<column-name>", StringType())])
spark.createDataFrame([], schema).write \
.saveAsTable("<catalog-name>.<schema-name>.<table-name>")
Como alternativa, use la DeltaTableBuilder API para opciones específicas de Delta, como las columnas generadas y las propiedades de tabla:
from delta.tables import DeltaTable
DeltaTable.create(spark) \
.tableName("<catalog-name>.<schema-name>.<table-name>") \
.addColumn("<column-name>", "<data-type>") \
.property("<key>", "<value>") \
.execute()
Cree una tabla administrada de Apache Iceberg:
from pyspark.sql.types import StructType, StructField, StringType
schema = StructType([StructField("<column-name>", StringType())])
spark.createDataFrame([], schema).write \
.format("iceberg") \
.saveAsTable("<catalog-name>.<schema-name>.<table-name>")
Para mantener el rendimiento en lecturas y escrituras, Azure Databricks ejecuta periódicamente las operaciones para optimizar los metadatos de la tabla de Apache Iceberg administrados. Esta tarea se realiza mediante computación sin servidor, que tiene MODIFY permisos sobre la tabla Apache Iceberg. Esta operación solo escribe en los metadatos de la tabla y el proceso únicamente conserva permisos para la tabla mientras dura el trabajo.
Note
Para crear una tabla de Apache Iceberg, especifique explícitamente USING iceberg. De lo contrario, Azure Databricks crea una tabla de Delta Lake de forma predeterminada.
Puede crear tablas administradas a partir de resultados de consulta u operaciones de escritura de DataFrame. En los artículos siguientes se muestran algunos de los muchos patrones que puede usar para crear una tabla administrada en Azure Databricks:
Para crear una copia de una tabla administrada existente, use clone. Las tablas de Delta Lake administradas admiten la clonación profunda y superficial. Las tablas administradas de Apache Iceberg solo admiten la clonación profunda. Consulte Clonación de una tabla en Azure Databricks y Clonación de una tabla de Iceberg administrada.
Anulación de una tabla administrada
Para eliminar una tabla administrada, debe tener:
- permiso
MANAGEpara la tabla, o bien debe ser el propietario de la tabla. -
USE SCHEMAen el esquema primario de la tabla. -
USE CATALOGen el catálogo primario de la tabla.
Para quitar una tabla administrada, ejecute el siguiente comando:
SQL
DROP TABLE IF EXISTS catalog_name.schema_name.table_name;
Python
spark.sql("DROP TABLE IF EXISTS catalog_name.schema_name.table_name")
Como alternativa, en Databricks Runtime 18.2 y versiones posteriores, use spark.catalog.dropTable():
spark.catalog.dropTable("catalog_name.schema_name.table_name", ifExists=True)
Unity Catalog admite el UNDROP TABLE comando para recuperar tablas administradas eliminadas accidentalmente. De forma predeterminada, las tablas se pueden recuperar durante 7 días después de quitarse. Una vez finalizado el período de recuperación, Azure Databricks elimina los archivos de datos subyacentes del inquilino en la nube en un plazo de 48 horas.
Configuración del período de recuperación
Importante
El período de recuperación configurable está en versión preliminar pública.
Puede configurar cuánto tiempo permanecen recuperables las tablas administradas quitadas en el nivel de catálogo o esquema. Si los períodos de recuperación se establecen en ambos niveles, la configuración del nivel de esquema tiene prioridad para las tablas de ese esquema.
Para configurar el período de recuperación, debe tener MANAGE privilegio o ser propietario del catálogo o del esquema. Esta configuración solo se aplica a las tablas eliminadas después de configurarla. No afecta a las tablas que ya se han eliminado.
El periodo de recuperación puede ser de 0 horas, lo que impide la recuperación, o de 7 a 30 días. Un periodo más largo protege frente a la eliminación accidental de datos críticos, mientras que un periodo más corto elimina los datos suprimidos más rápidamente para ahorrar costes de almacenamiento en canalizaciones de ETL que crean y eliminan tablas con frecuencia. Cuando se establece en 0, las tablas eliminadas no pueden recuperarse con UNDROP. Azure Databricks elimina los archivos de datos del almacenamiento en la nube en un plazo de 48 horas desde la caída.
Para establecer el período de recuperación, use ALTER CATALOG o ALTER SCHEMA con la RETAIN DROPPED TO cláusula :
SQL
-- Set a 30-day recovery period on a catalog
ALTER CATALOG my_catalog RETAIN DROPPED TO 30 DAYS;
-- Set a 7-day recovery period on a schema (overrides the catalog setting)
ALTER SCHEMA my_catalog.my_schema RETAIN DROPPED TO 7 DAYS;
Python
spark.sql("ALTER CATALOG my_catalog RETAIN DROPPED TO 30 DAYS")
spark.sql("ALTER SCHEMA my_catalog.my_schema RETAIN DROPPED TO 7 DAYS")
También puede establecer el período de recuperación al crear un catálogo o esquema con la RETAIN DROPPED FOR cláusula :
SQL
CREATE CATALOG my_catalog RETAIN DROPPED FOR 30 DAYS;
CREATE SCHEMA my_catalog.my_schema RETAIN DROPPED FOR 7 DAYS;
Python
spark.sql("CREATE CATALOG my_catalog RETAIN DROPPED FOR 30 DAYS")
spark.sql("CREATE SCHEMA my_catalog.my_schema RETAIN DROPPED FOR 7 DAYS")
Para comprobar el período de recuperación actual, ejecute DESCRIBE EXTENDED. La salida incluye una fila Recovery Period Hours:
SQL
DESCRIBE CATALOG EXTENDED my_catalog;
DESCRIBE SCHEMA EXTENDED my_catalog.my_schema;
Python
spark.sql("DESCRIBE CATALOG EXTENDED my_catalog").show()
spark.sql("DESCRIBE SCHEMA EXTENDED my_catalog.my_schema").show()