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.
En Unity Catalog, una tabla externa almacena sus archivos de datos en el almacenamiento de objetos de nube dentro de su cuenta de nube. El Catálogo de Unity sigue administrando los metadatos de la tabla, lo que garantiza una gobernanza completa de los datos en todas las consultas. Sin embargo, no administra el ciclo de vida, la optimización, la ubicación de almacenamiento ni el diseño de los datos.
Al definir una tabla externa del catálogo de Unity, debe especificar una ubicación de almacenamiento. Esta ubicación es una ubicación externa registrada en el catálogo de Unity. Al quitar una tabla externa, Unity Catalog quita los metadatos de la tabla, pero no elimina los archivos de datos subyacentes.
Este artículo se centra en las tablas externas de Unity Catalog. Las tablas externas del metastore de Hive antiguo tienen comportamientos diferentes. Consulte Objetos de base de datos en el metastore de Hive heredado.
Cuándo usar tablas externas
Databricks recomienda usar tablas externas para los siguientes casos de uso:
- Debe registrar una tabla respaldada por los datos existentes que no son compatibles con las tablas administradas de Unity Catalog.
- También necesita acceso directo a los datos de clientes que no son de Databricks que no admiten otros patrones de acceso externo. Los privilegios de Unity Catalog no se aplican cuando los usuarios acceden a archivos de datos desde sistemas externos. Consulta Acceso a datos de Databricks mediante sistemas externos.
En la mayoría de los casos, Databricks recomienda usar tablas administradas de Unity Catalog para aprovechar la optimización automática de tablas, un rendimiento más rápido de las consultas y reducir los costos. Para migrar tablas externas a tablas administradas, consulte Conversión de una tabla externa en una tabla de catálogo de Unity administrada.
Importante
Si actualiza metadatos de tabla externa mediante un cliente que no es de Databricks o usa acceso basado en rutas de acceso desde Databricks, esos metadatos no sincronizan automáticamente el estado con el catálogo de Unity. Databricks desaconseja tales actualizaciones de metadatos, pero si realiza una, debe ejecutar MSCK REPAIR TABLE <table-name> SYNC METADATA para actualizar el esquema en Unity Catalog. Consulte REPAIR TABLE.
Formatos de archivo para tablas externas
Las tablas externas pueden usar los siguientes formatos de archivo:
- DELTA
- CSV
- JSON
- AVRO
- PARQUET
- ORCO
- Mensaje de texto
Creación de una tabla externa
Puede crear tablas externas mediante comandos SQL o operaciones de escritura de DataFrame.
Antes de empezar
Antes de crear una tabla externa, primero debe configurar una ubicación externa que conceda acceso al almacenamiento en la nube.
Para más información sobre cómo configurar ubicaciones externas, consulte Creación de una ubicación externa para conectar el almacenamiento en la nube a Azure Databricks.
Para crear una tabla externa, debe cumplir los siguientes requisitos de permisos:
- El privilegio
CREATE EXTERNAL TABLEsobre una ubicación externa que conceda acceso al valor deLOCATIONal que tiene acceso la tabla externa. - Permiso
USE CATALOGen el catálogo primario de la tabla. - Permiso
USE SCHEMAen el esquema principal de la tabla. - Permiso
CREATE TABLEen el esquema principal de la tabla.
Nota:
Cuando una ubicación externa S3 está asociada a varios metastores, evite conceder acceso de escritura a las tablas que usan esa ubicación S3 porque las escrituras de diferentes metastores en la misma tabla externa pueden provocar problemas de coherencia. Sin embargo, la lectura desde la misma ubicación externa de S3 en varios metastores es segura.
Ejemplos de comandos SQL
Use uno de los siguientes ejemplos de comandos en un cuaderno o en el editor de consultas SQL para crear una tabla externa.
En los ejemplos siguientes, reemplace los valores de marcador de posición:
-
<catalog>: nombre de la base de datos que contendrá la tabla. -
<schema>: nombre del esquema que contendrá la tabla. -
<table-name>: nombre para la tabla. -
<column-specification>: nombre y tipo de datos de cada columna. -
<bucket-path>: ruta de acceso al cubo de almacenamiento en la nube donde se creará la tabla. -
<table-directory>: directorio donde se creará la tabla. Use un directorio único para cada tabla.
ADLS
CREATE TABLE <catalog>.<schema>.<table-name>
(
<column-specification>
)
LOCATION 'abfss://<bucket-path>/<table-directory>';
S3
CREATE TABLE <catalog>.<schema>.<table-name>
(
<column-specification>
)
LOCATION 's3://<bucket-path>/<table-directory>';
Para obtener más información sobre los parámetros de creación de tablas, vea CREATE TABLE.
Operaciones de escritura de dataFrame
También puede crear tablas externas a partir de resultados de consulta u operaciones de escritura de DataFrame. Use la LOCATION cláusula para especificar la ruta de acceso de almacenamiento externa al crear tablas con DataFrames.
Las siguientes opciones de sintaxis SQL funcionan con operaciones dataframe:
Eliminar una tabla externa
Para quitar una tabla, debes ser su propietario o tener el privilegio MANAGE en la tabla. Para anular una tabla externa, ejecute el siguiente comando de SQL:
DROP TABLE IF EXISTS catalog_name.schema_name.table_name;
Unity Catalog no elimina los datos subyacentes en el almacenamiento en nube cuando se anula una tabla externa. Debe eliminar directamente los archivos de datos subyacentes si necesita quitar los datos asociados a la tabla.
Cuaderno de ejemplo: Creación de tablas externas
Puede usar el cuaderno de ejemplo siguiente para crear un catálogo, un esquema y una tabla external, y para administrar los permisos sobre ellos.