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.
Si tiene habilitado el acceso a datos externos en Unity Catalog, puede añadir acceso a datos externos a las vistas materializadas y tablas de streaming administradas por pipelines y a las independientes. Esto permite que los clientes externos de Delta e Iceberg accedan a sus conjuntos de datos a través de las API REST del catálogo de Unity y del catálogo de Iceberg, sin necesidad de realizar una copia completa de los datos.
El acceso a datos externos funciona para conjuntos de datos administrados por pipelines de Lakeflow y para vistas materializadas y tablas de streaming independientes.
Capabilities
El uso del acceso a datos externos expone los mismos datos disponibles en Azure Databricks para las vistas materializadas y las tablas de streaming administradas por el pipeline y las independientes, sin crear un duplicado de los datos. Esto proporciona las siguientes características para el rendimiento y la funcionalidad:
- No se requiere ninguna copia de datos: El acceso externo está habilitado sin duplicar el conjunto de datos completo.
- Acceso externo a través de las API: Leer vistas materializadas y tablas de transmisión mediante las API de Delta Lake o Iceberg.
- Consistencia de lectura tras escritura: Los lectores externos pueden acceder a datos actualizados después de una actualización del conjunto de datos, lo que garantiza que no haya datos obsoletos. Las actualizaciones están disponibles inmediatamente después de la actualización.
- Objeto de tabla única: Los conjuntos de datos aparecen externamente como tablas administradas con el mismo nombre que el conjunto de datos de origen en las API de catálogo de Unity.
- Bajo costo: Dado que el conjunto de datos completo no se copia, la sobrecarga para proporcionar acceso externo es baja.
Requirements
Los requisitos de los conjuntos de datos son:
- Catálogo de Unity: Las tablas de streaming y las vistas materializadas deben usar el catálogo de Unity.
- Versión de Databricks Runtime: Debe usar Databricks Runtime 17.3 y versiones posteriores.
- Modo de publicación por defecto: La legibilidad externa solo se soporta en el modo de publicación por defecto. Para usar la legibilidad externa, migra al modo de publicación por defecto. Las características que dependen de metadatos externos, como el CDF de vistas materializadas, funcionarán en modo de publicación heredado.
Los requisitos para sus clientes son:
- Versión de la API delta: El cliente debe admitir las API de Delta Lake 4.0.0 o posteriores, incluidos los vectores de eliminación, y debe usar las API de catálogo del catálogo de Unity para el acceso.
- Versión de la API de Iceberg: Como alternativa, el cliente puede tener acceso mediante las API de catálogo de Cosmos que admiten la especificación de Cosmos v3.
-
Privilegios de Unity Catalog: la entidad de seguridad que lee los conjuntos de datos externamente debe tener el privilegio EXTERNAL USE SCHEMA sobre el esquema y el privilegio
SELECTsobre la tabla.
Nota:
Si su cliente no admite estos requisitos, también puede usar el modo de compatibilidad, que admite todos los clientes de Delta e Iceberg, pero requiere crear una copia completa del conjunto de datos.
Habilitación del acceso para un conjunto de datos
Hay dos pasos para habilitar el acceso externo a un conjunto de datos.
Habilita los metadatos externos mediante la configuración de la canalización o una propiedad de la tabla. La configuración en el nivel de tabla tiene prioridad sobre la configuración del pipeline cuando ambas están establecidas, y es compatible tanto con las vistas materializadas y las tablas de streaming administradas por el pipeline como con las independientes.
Configuración de la canalización: Configura
pipelines.externalMetadata.enabledcomotruepara habilitar metadatos externos para todos los conjuntos de datos de la canalización. Las vistas materializadas independientes y las tablas de streaming creadas con Databricks SQL no tienen una configuración de pipeline; Utiliza una propiedad de tabla en su lugar.Interfaz de usuario de la configuración de canalizaciones
En la configuración de la canalización, completa los siguientes pasos:
- Abra la canalización y haga clic en Configuración.
- En Configuración, agregue un par clave-valor: Clave
pipelines.externalMetadata.enabled, Valortrue. - Haz clic en Guardar.
JSON de configuración de canalizaciones
En la sección
configurationdel JSON de la canalización, agregue:{ "configuration": { "pipelines.externalMetadata.enabled": "true" } }Propiedad de la tabla: Añade la siguiente propiedad a la tabla de streaming o a la definición de vista materializada. Para las tuberías Lakeflow Connect, consulte las propiedades de la tabla Set Delta.
CREATE OR REFRESH [MATERIALIZED VIEW | STREAMING TABLE] tbl_name TBLPROPERTIES('pipelines.externalMetadata.enabled' = 'true')
Después de guardar la configuración, ejecute o reinicie la canalización para aplicar los cambios:
- Canalizaciones desencadenadas: ejecute la canalización una vez.
- Canalizaciones continuas: detenga y reinicie la canalización.
Para objetos SQL Databricks independientes, usa
CREATE OR REPLACE MATERIALIZED VIEWoCREATE OR REFRESH STREAMING TABLEcon la propiedad de tabla. La instrucción CREATE o REFRESH aplica la propiedad.Si planeas leer el conjunto de datos con un cliente Iceberg moderno, añade las siguientes propiedades UniForm Iceberg V3 además de la propiedad de metadatos externos. Para las tuberías Lakeflow Connect, consulte las propiedades de la tabla Set Delta.
Propiedad Uso 'pipelines.externalMetadata.enabled' = 'true'Habilita el acceso externo a la tabla. Esta configuración a nivel de tabla tiene prioridad sobre la configuración de la tubería cuando ambas están establecidas. 'delta.columnMapping.mode' = 'name'La asignación de columnas es obligatoria para Iceberg. 'delta.enableRowTracking' = 'true'Habilitar el seguimiento de filas para las lecturas de Iceberg. 'delta.universalFormat.enabledFormats' = 'iceberg'Habilitar las lecturas de Iceberg. 'delta.enableIcebergCompatV3' = 'true'Utilizar Iceberg V3 para las lecturas de Iceberg. CREATE OR REFRESH [MATERIALIZED VIEW | STREAMING TABLE] tbl_name TBLPROPERTIES( 'delta.columnMapping.mode' = 'name', 'delta.enableRowTracking' = 'true', 'delta.enableIcebergCompatV3' = 'true', 'delta.universalFormat.enabledFormats' = 'iceberg', 'pipelines.externalMetadata.enabled' = 'true')Para vistas materializadas, puedes usar la sintaxis equivalente
USING ICEBERGen su lugar.CREATE OR REFRESH MATERIALIZED VIEW tbl_name USING ICEBERGPara conjuntos de datos gestionados por canalización, utiliza las instrucciones de actualización de tubería anteriores para aplicar las propiedades de Iceberg. Para objetos SQL independientes de Databricks, reejecuta la definición del objeto con las propiedades actualizadas. Use
CREATE OR REPLACE MATERIALIZED VIEWpara una vista materializada oCREATE OR REFRESH STREAMING TABLEpara una tabla de streaming. Para ver las propiedades de tu conjunto de datos, utiliza las sentencias SQLDESCRIBE DETAILoDESCRIBE EXTENDED.
Resolución de problemas en el acceso externo a datos
Si crees que los metadatos externos no están actualizados, un usuario con el privilegio MODIFY sobre la tabla puede desencadenar manualmente la actualización de metadatos mediante el cómputo compartido del clúster con Databricks Runtime 17.3 o posterior:
REPAIR TABLE <catalog>.<schema>.<table-name> SYNC METADATA;
Puedes comprobar la presencia de los metadatos de Iceberg en la página de detalles de la tabla de la interfaz de Catalog Explorer. Alternativamente, ejecuta los siguientes comandos en el editor SQL o en un cuaderno de Azure Databricks:
DESCRIBE DETAIL <catalog>.<schema>.<table-name>;
DESCRIBE EXTENDED <catalog>.<schema>.<table-name>;
Para una tabla de streaming, compara la versión de metadatos de Iceberg con la última versión de la tabla de streaming. La comparación de versiones para las vistas materializadas aún no está disponible.
Lectura de datos de clientes externos
Las siguientes secciones ofrecen ejemplos de cómo leer tu conjunto de datos de diferentes clientes y entornos.
Para detalles de configuración, véase acceso al cliente Delta y acceso al cliente Iceberg.
Uso de la API REST de Unity con el Lector delta de Spark
Use Apache Spark™ versión 4.0 o posterior. Puede descargar desde https://spark.apache.org/downloads.html.
En función del proveedor de nube, ejecute el siguiente comando para iniciar un shell de Spark SQL con Delta 4.0 y catálogo de Unity.
AWS
bin/spark-sql \ --packages org.apache.spark:spark-hadoop-cloud_2.13:4.0.0,io.unitycatalog:unitycatalog-spark_2.13:0.3.1 \ --conf spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension \ --conf spark.sql.catalog.spark_catalog=io.unitycatalog.spark.UCSingleCatalog \ --conf spark.hadoop.fs.s3.impl=org.apache.hadoop.fs.s3a.S3AFileSystem \ --conf spark.sql.catalog.<uc-catalog-name>=io.unitycatalog.spark.UCSingleCatalog \ --conf spark.sql.catalog.<uc-catalog-name>.uri=<workspace_url> \ --conf spark.sql.catalog.<uc-catalog-name>.token=<PAT> \ --conf spark.sql.defaultCatalog=<uc-catalog-name>Azure
bin/spark-sql \ --packages org.apache.hadoop:hadoop-azure:3.3.6,io.unitycatalog:unitycatalog-spark_2.13:0.3.1 \ --conf spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension \ --conf spark.sql.catalog.spark_catalog=io.unitycatalog.spark.UCSingleCatalog \ --conf spark.sql.catalog.<uc-catalog-name>=io.unitycatalog.spark.UCSingleCatalog \ --conf spark.sql.catalog.<uc-catalog-name>.uri=<workspace_url> \ --conf spark.sql.catalog.<uc-catalog-name>.token=<PAT> \ --conf spark.sql.defaultCatalog=<uc-catalog-name>GCP
bin/spark-sql \ --packages io.unitycatalog:unitycatalog-spark_2.13:0.3.1 \ --conf spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension \ --conf spark.sql.catalog.spark_catalog=io.unitycatalog.spark.UCSingleCatalog \ --conf spark.hadoop.fs.gs.impl=com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystem \ --conf spark.hadoop.fs.AbstractFileSystem.gs.impl=com.google.cloud.hadoop.fs.gcs.GoogleHadoopFS \ --conf spark.sql.catalog.<uc-catalog-name>=io.unitycatalog.spark.UCSingleCatalog \ --conf spark.sql.catalog.<uc-catalog-name>.uri=<workspace_url> \ --conf spark.sql.catalog.<uc-catalog-name>.token=<PAT> \ --conf spark.sql.defaultCatalog=<uc-catalog-name>Ahora, desde el intérprete de comandos de SQL, puede acceder a su conjunto de datos con Spark SQL. Por ejemplo:
spark-sql ()> SELECT * FROM <uc-catalog>.<uc-schema>.<uc-table-name>;
Use el lector Snowflake Iceberg
En Snowflake, puede usar Iceberg Reader. Esto requiere la compatibilidad con Iceberg v3 en Snowflake.
Configure el catálogo REST de Iceberg en 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-table-name>';Accede a tu conjunto de datos desde Snowflake SQL.
ALTER ICEBERG TABLE my_table REFRESH; SELECT * FROM my_table;
Usar el catálogo REST de Iceberg con el lector Iceberg de Spark
Use Apache Spark™ versión 4.0 o posterior. Puede descargar desde https://spark.apache.org/downloads.html.
En AWS, ejecute el siguiente comando para iniciar un shell de Spark SQL con Iceberg v3.
bin/spark-sql \ --packages org.apache.iceberg:iceberg-spark-runtime-4.0_2.13:1.10.0,org.apache.iceberg:iceberg-aws-bundle:1.10.0 \ --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions \ --conf spark.sql.catalog.<uc-catalog-name>=org.apache.iceberg.spark.SparkCatalog \ --conf spark.sql.catalog.<uc-catalog-name>.io-impl=org.apache.iceberg.aws.s3.S3FileIO \ --conf spark.sql.catalog.<uc-catalog-name>.type=rest \ --conf spark.sql.catalog.<uc-catalog-name>.uri=<workspace_url>/api/2.1/unity-catalog/iceberg-rest \ --conf spark.sql.catalog.<uc-catalog-name>.token='<PAT>' \ --conf spark.sql.catalog.<uc-catalog-name>.warehouse=<uc-catalog-name> \ --conf spark.sql.iceberg.vectorization.enabled=falseAcceda al conjunto de datos desde Spark SQL.
spark-sql ()> SELECT * FROM <uc-catalog>.<uc-schema>.<uc-table-name>;
Migración desde el modo de compatibilidad
Si actualmente está compartiendo un conjunto de datos mediante el modo de compatibilidad, puede migrar para usar el acceso a datos externos.
- Habilite esta característica siguiendo los pasos descritos en Habilitación del acceso para un conjunto de datos.
- Deshabilite el modo de compatibilidad. Consulte Deshabilitar el modo de compatibilidad.
Limitaciones
A continuación se muestran limitaciones conocidas con el acceso a datos externos para tablas de streaming y vistas materializadas.
- Escrituras externas: No se admiten escrituras externas en conjuntos de datos de canalización.
- Acceso basado en rutas: No se admiten los lectores externos que requieren acceso basado en rutas (leyendo directamente desde una ubicación de almacenamiento en lugar de a través de la API de UC). Para admitir el acceso basado en rutas de acceso, puede usar el modo de compatibilidad, que admite el acceso basado en rutas de acceso, pero requiere una copia completa del conjunto de datos.
- Características de seguridad: No se admite la seguridad de nivel de fila ni el enmascaramiento de nivel de columna en lecturas externas.
- Viaje en el tiempo:No se soporta el viaje en el tiempo mediante esta función.
- Confirmaciones de catálogo (beta):las confirmaciones del catálogo no son compatibles con el acceso a datos externos. Para utilizar el acceso a datos externos en una tabla de streaming o una vista materializada, primero debes desactivar las confirmaciones del catálogo.
- Fabric: No se admite la lectura desde Microsoft Fabric.