Nota
L'accés a aquesta pàgina requereix autorització. Pots provar d'iniciar sessió o canviar de directori.
L'accés a aquesta pàgina requereix autorització. Pots provar de canviar directoris.
Importante
Esta característica está en versión preliminar pública.
Con el modo de compatibilidad, puede leer tablas administradas de Unity Catalog, vistas materializadas y tablas de streaming desde sistemas externos, a la vez que mantiene un rendimiento óptimo en Azure Databricks. Esta característica genera automáticamente versiones de solo lectura de sus tablas a las que puede acceder cualquier cliente de Delta Lake o Iceberg.
Información general
Cuando se habilita en una tabla administrada, una tabla de streaming o una vista materializada, el modo de compatibilidad genera una versión de solo lectura de la tabla en una ubicación elegida. Esta versión de compatibilidad incluye metadatos v1 para los formatos Delta Lake y Iceberg, lo que proporciona las siguientes funcionalidades:
- Interoperabilidad con cualquier cliente de Delta Lake: lea las tablas administradas, incluidas las tablas de streaming o las vistas materializadas, desde clientes como Amazon Athena, Microsoft Fabric, Snowflake y Amazon Redshift directamente desde el almacenamiento o a través de la API REST de Unity.
- Interoperabilidad con cualquier cliente de Iceberg: lea las tablas administradas, incluidas las tablas de streaming o las vistas materializadas, desde clientes de Iceberg como Apache Spark, Apache Trino y Snowflake a través del catálogo REST de Iceberg.
- Automatización automática: automatice las actualizaciones de datos y metadatos para las versiones de compatibilidad, con la capacidad de configurar intervalos de actualización a casi en tiempo real.
Prerrequisitos
Para habilitar el modo de compatibilidad en una tabla, debe usar el catálogo de Unity. Solo se admiten tablas de streaming de Catálogo de Unity, vistas materializadas de Unity Catalog y tablas administradas de Catálogo de Unity. No se admiten tablas externas del catálogo de Unity.
Además, compruebe que tiene una ubicación externa registrada en el catálogo de Unity con la configuración y los permisos adecuados:
- La ubicación de destino debe existir en la cuenta de almacenamiento y estar vacía.
- La ubicación de destino o cualquiera de sus carpetas primarias debe registrarse como una ubicación externa en el catálogo de Unity.
- Debe tener
CREATE EXTERNAL TABLEprivilegios para la ubicación externa. - La ubicación de destino y las carpetas primarias o secundarias no deben haberse usado como ubicación del modo de compatibilidad para otra tabla en los últimos 7 días.
Habilitar el modo de compatibilidad en tablas
En el caso de las tablas de streaming, las vistas materializadas y los clones superficiales administrados, establezca las siguientes propiedades de tabla en el momento de la creación de la tabla.
CREATE [STREAMING TABLE | MATERIALIZED VIEW | TABLE] my_catalog.my_schema.my_table
TBLPROPERTIES(
'delta.universalFormat.enabledFormats' = 'compatibility',
'delta.universalFormat.compatibility.location' = '<location>'
)
Solo en el caso de las tablas administradas por el catálogo de Unity, también puede habilitar el modo de compatibilidad al modificar una tabla existente:
-- For existing managed tables
ALTER TABLE my_catalog.my_schema.my_table SET TBLPROPERTIES(
'delta.universalFormat.enabledFormats' = 'compatibility',
'delta.universalFormat.compatibility.location' = '<location>'
)
La primera vez tarda hasta una hora en generar una versión de compatibilidad. Puede actualizar manualmente la tabla inmediatamente para confirmar que funciona.
Nota:
Debe especificar el nombre completo de la tabla de tres partes (catalog.schema.table_name). Por ejemplo, para users.john.my_table, userses el catálogo y john es el esquema.
Comprobar si el modo de compatibilidad está habilitado
Para comprobar que el modo de compatibilidad está habilitado en la tabla, compruebe que la delta.universalFormat.enabledFormats = 'compatibility' propiedad table existe. Puede ver esta propiedad en la interfaz de usuario del Explorador de catálogos en la pestaña de detalles de la tabla.
También puede ejecutar los siguientes comandos SQL en un cuaderno:
DESC DETAIL my_catalog.my_schema.my_table
DESC EXTENDED my_catalog.my_schema.my_table
Busque estas propiedades en la salida:
-
delta.universalFormat.enabledFormats: "compatibility": indica que el modo de compatibilidad está habilitado. -
delta.universalFormat.compatibility.location: muestra la ubicación de la versión del modo de compatibilidad.
Configurar intervalos de actualización
En el caso de las tablas administradas por el catálogo de Unity, puede configurar la frecuencia con la que se actualiza la versión del modo de compatibilidad estableciendo el intervalo de actualización:
-- Evaluate whether a refresh is needed after every commit (fastest)
ALTER TABLE my_catalog.my_schema.my_table SET TBLPROPERTIES(
'delta.universalFormat.enabledFormats' = 'compatibility',
'delta.universalFormat.compatibility.location' = '<location>',
'delta.universalFormat.compatibility.targetRefreshInterval' = '0 MINUTES'
)
-- Refresh hourly (default)
ALTER TABLE my_catalog.my_schema.my_table SET TBLPROPERTIES(
'delta.universalFormat.enabledFormats' = 'compatibility',
'delta.universalFormat.compatibility.location' = '<location>',
'delta.universalFormat.compatibility.targetRefreshInterval' = '1 HOUR'
)
El intervalo de actualización predeterminado es 1 HOUR. No se recomienda establecer el intervalo de actualización inferior a 1 hora y no hará que las actualizaciones se produzcan con más frecuencia. La excepción es cuando se establece el intervalo de actualización en 0 MINUTES. En este caso, Azure Databricks comprueba si hay cambios después de cada confirmación y desencadena una actualización si es necesario.
En el caso de las tablas de streaming y las vistas materializadas, no se requiere un intervalo de actualización. El valor predeterminado es 0 MINUTES.
Nota:
Los cambios que afectan significativamente a los tiempos de actualización (como el cambio de nombre de columna o la habilitación de la ampliación de tipos) se realizan cada hora independientemente del intervalo de actualización de destino.
Actualización manual
Para desencadenar manualmente una actualización de la versión de compatibilidad:
REFRESH [TABLE | STREAMING TABLE | MATERIALIZED VIEW] my_catalog.my_schema.my_table SYNC UNIFORM
La actualización manual es útil para probar que el modo de compatibilidad funciona correctamente o para garantizar que la versión de compatibilidad esté up-to-date antes de una lectura posterior. Sin embargo, esperar las actualizaciones automáticas puede ser más rentable.
Supervisión del estado de generación de datos y metadatos
El modo de compatibilidad genera datos y metadatos de forma automática y asincrónica. En el caso de las tablas administradas por el catálogo de Unity, la generación se produce cada hora de forma predeterminada o en función del intervalo de actualización configurado. En el caso de las tablas de streaming y las vistas materializadas, la generación se produce después de las actualizaciones de la tabla cuando hay nuevas confirmaciones.
Para comprobar si los datos y metadatos se han generado correctamente:
Use
DESCRIBE HISTORYpara buscar la versión más reciente de la tabla de origen:DESC HISTORY my_catalog.my_schema.my_table
Este comando devuelve el historial de actualizaciones al modo de compatibilidad, incluida la versión y la marca de tiempo de Delta Lake. La fila superior contiene la versión más reciente y la marca de tiempo.
Use
DESCRIBE EXTENDEDpara buscar la versión correspondiente del modo de compatibilidad:DESC EXTENDED my_catalog.my_schema.my_table
Busque campos en Información uniforme de compatibilidad:
- Última versión actualizada: la versión de Delta Lake que se actualizó por última vez con el modo de compatibilidad
- Última actualización: marca de tiempo de la última actualización
El Modo de Compatibilidad está actualizado si la versión de la tabla coincide con la versión que se encuentra en el paso 1.
Utilice
DESC HISTORYdirectamente en la versión de compatibilidad.DESC HISTORY delta.\`<compatibility_location>\`
En el Explorador de catálogos, vea los campos de metadatos de la versión de compatibilidad. El modo de compatibilidad está actualizado si la versión de Delta Lake coincide con la versión que se encuentra en el paso 3.
Supervisión de costos
La optimización predictiva controla el clúster de proceso que realiza actualizaciones automáticas para el modo de compatibilidad. Para ver los costos asociados, consulte las tablas de facturación del sistema:
SELECT
DATE_TRUNC('DAY', start_time) AS day,
SUM(usage_quantity) AS dbus
FROM
system.storage.predictive_optimization_operations_history
WHERE
operation_type = "COMPATIBILITY_MODE_REFRESH"
GROUP BY 1
ORDER BY 1 DESC;
Esta consulta informa solo sobre el uso de los refrescos automáticos. Los costos de las actualizaciones manuales están asociados con sus recursos de computación, y no hay una manera directa de realizar un seguimiento separado de esos costos. Por lo general, el costo de un desencadenador manual es proporcional al costo de la operación de escritura inicial en la tabla original.
Eliminación de archivos de datos sin usar
Para quitar archivos de datos sin usar en la versión de compatibilidad de la tabla, use VACUUM:
VACUUM delta.'<compatibility_mode_location_path>';
Para encontrar la ubicación de la ruta de acceso del modo de compatibilidad, use el DESCRIBE EXTENDED comando dentro de Comprobar si el modo de compatibilidad está habilitado. En la salida, el valor de delta.universalFormat.compatibility.location es la ubicación.
Leer versiones de compatibilidad de clientes externos
Puede usar cualquier cliente de Delta Lake o Iceberg para leer datos de versiones de compatibilidad. A continuación encontrará ejemplos de Amazon Athena, Snowflake (lector delta) y Fabric.
Amazon Athena
En el Editor de consultas de Athena, cree una tabla externa con la ubicación especificada:
CREATE EXTERNAL TABLE <table_name> LOCATION '<compatibility_location>' TBLPROPERTIES ('table_type' = 'DELTA')Lea la tabla:
SELECT * FROM <table_name>
Lector de Snowflake Delta Lake
Cree la integración de almacenamiento para acceder a la ubicación de almacenamiento (consulte la documentación de Snowflake).
Cree una tabla externa con formato Delta Lake:
CREATE OR REPLACE EXTERNAL TABLE <table_name> WITH LOCATION = @<my_location> FILE_FORMAT = (TYPE = PARQUET) TABLE_FORMAT = DELTA AUTO_REFRESH = false REFRESH_ON_CREATE = false;Actualice la tabla (no se admite la actualización automática para el formato Delta Lake en Snowflake):
ALTER EXTERNAL TABLE <table_name> REFRESH;Lea la tabla:
SELECT * FROM <table_name>;
Microsoft Fabric
Cree una capacidad de Fabric, un área de trabajo y un cuaderno de Synapse.
Crear un lakehouse con datos en la ubicación compatible.
Lea los archivos como una tabla de Delta Lake:
spark.read.format("delta").load("Files/<path_to_data>")
Lectura de versiones de compatibilidad desde la API REST de Unity
Las tablas con el modo de compatibilidad habilitado se pueden leer por nombre a través de la API REST de Unity con parámetros especiales. Para las tablas de streaming, establezca el siguiente parámetro de API:
GET /api/2.1/unity-catalog/tables/{full_name}?read_streaming_table_as_managed=true
Para las vistas materializadas, establezca el siguiente parámetro de API:
GET /api/2.1/unity-catalog/tables/{full_name}?read_materialized_view_as_managed=true
Lectura de versiones compatibles del catálogo REST de Iceberg
Las tablas con el modo de compatibilidad habilitado se pueden leer desde cualquier cliente de Alias mediante el catálogo REST de Alias. El modo de compatibilidad funciona automáticamente para los formatos de tabla Delta Lake e Iceberg.
Requisitos de configuración
- Habilite el acceso a datos externos en el metastore.
- Conceda
EXTERNAL USE SCHEMAprivilegio en el esquema. - Cree un token de acceso personal (PAT) de Azure Databricks.
Configuración de Apache Spark
bin/spark-sql --packages org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.8.0,org.apache.iceberg:iceberg-azure-bundle:1.8.0 \
--conf "spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions" \
--conf spark.sql.catalog.catalog_name=org.apache.iceberg.spark.SparkCatalog \
--conf spark.sql.catalog.catalog_name.type=rest \
--conf spark.sql.catalog.catalog_name.uri=<workspace-url>/api/2.1/unity-catalog/iceberg-rest \
--conf spark.sql.catalog.catalog_name.token=<PAT> \
--conf spark.sql.catalog.catalog_name.warehouse=<uc-catalog-name>
Para obtener más información, consulte Uso de tablas de Iceberg con Apache Spark.
Configuración de Snowflake
CREATE OR REPLACE CATALOG INTEGRATION my_uc_int
CATALOG_SOURCE = ICEBERG_REST
TABLE_FORMAT = ICEBERG
CATALOG_NAMESPACE = '<uc-schema-name>'
REST_CONFIG = (
CATALOG_URI = '<workspace-url>/api/2.1/unity-catalog/iceberg-rest'
CATALOG_NAME = '<uc-catalog-name>'
ACCESS_DELEGATION_MODE = VENDED_CREDENTIALS
)
REST_AUTHENTICATION = (
TYPE = BEARER
BEARER_TOKEN = '<PAT>'
)
ENABLED = TRUE;
CREATE OR REPLACE ICEBERG TABLE my_table
CATALOG = 'my_uc_int'
CATALOG_TABLE_NAME = '<uc-st/mv-name>';
Deshabilitar el modo de compatibilidad
Para deshabilitar el modo de compatibilidad, desconjunte la propiedad de tabla correspondiente:
-- For UC managed tables
ALTER TABLE my_table UNSET TBLPROPERTIES('delta.universalFormat.enabledFormats')
-- For streaming tables and materialized views
CREATE OR REPLACE [STREAMING TABLE | MATERIALIZED VIEW] my_table
TBLPROPERTIES('delta.universalFormat.enabledFormats' = '')
Advertencia
Desactivar el modo de compatibilidad detiene inmediatamente la generación de datos y metadatos. Después de 7 días, se eliminarán los datos y metadatos asociados. Dentro de este período de 7 días, puede restaurar los datos y los metadatos si vuelve a habilitar el modo de compatibilidad en la misma tabla.
Limitaciones
- Acceso de solo lectura: la versión de compatibilidad es de solo lectura. No es posible escribir en la versión de compatibilidad.
- No se admite RLS/CLS: no se puede habilitar el modo de compatibilidad en tablas con seguridad de Row-Level (RLS) o seguridad de Column-Level (CLS).
- No se admite el cambio de nombre de columna de partición: no se admite el cambio de nombre de columna de partición en tablas con el modo de compatibilidad habilitado. Se admite el cambio de nombre de columna de datos.
-
Características de tabla limitadas: las siguientes funcionalidades no están disponibles en la versión de compatibilidad:
- Columnas de colación
- Claves principales
- Viaje en el tiempo
- Cambio de fuente de distribución de datos
- Nombres de columna con caracteres especiales (se cambiará el nombre)