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.
Importante
La conversión de una tabla externa en una tabla administrada está disponible con carácter general.
La conversión de una tabla externa en una tabla administrada se encuentra en versión preliminar pública. Solo se admiten las tablas foráneas federadas con Hive metastore y Glue Federation.
Para convertir una tabla externa o ajena de Delta Lake en una tabla administrada por Unity Catalog en Azure Databricks, use el comando ALTER TABLE ... SET MANAGED o, en el caso de las tablas externas, el Explorador de catálogos. La conversión conserva las configuraciones de tabla, incluidos el nombre, la configuración, los permisos y las vistas, y conserva el historial de tablas.
Para conversiones de tablas externas, SET MANAGED además:
- Minimiza el tiempo de inactividad del lector y del escritor.
- Controla las escrituras simultáneas durante la conversión.
- Permite revertir una tabla administrada convertida a una tabla externa.
- Redirige las lecturas y escrituras basadas en rutas para permitir que el código heredado funcione después de la conversión.
Aunque también puede utilizar CREATE TABLE AS SELECT (CTAS) para convertir una tabla externa, Databricks recomienda SET MANAGED para obtener estas ventajas.
En el caso de las conversiones de tablas externas, Databricks establece la optimización predictiva en la tabla convertida en INHERIT en lugar de habilitarla automáticamente. Consulte Tablas externas con SQL.
Para convertir tablas externas en tablas externas, consulte Convertir una tabla externa en una tabla externa de Catálogo de Unity.
Prerrequisitos
Los requisitos previos difieren en función de si se convierte una tabla externa o una tabla foránea.
Tablas externas
La conversión de tablas externas en tablas administradas tiene los siguientes requisitos previos:
- Formato: la tabla debe usar el formato Delta Lake.
-
Runtime: Debe usar Databricks Runtime 17.3 LTS o superior, o cómputo sin servidor para usar
SET MANAGED,UNSET MANAGEDoTRUNCATE UNIFORM HISTORY. - Lectores y escritores: los lectores y escritores de Azure Databricks de las tablas de origen deben usar Databricks Runtime 15.4 LTS o una versión posterior. Si tus lectores o autores usan la versión 14.3 LTS o inferior, consulta Lectores y autores heredados.
-
Clientes externos: los clientes externos (que no son de Databricks) deben admitir lecturas en tablas administradas de Unity Catalog. Vea Tablas de acceso con clientes Delta.
- Use el panel de Access Insights para ver si los lectores y escritores que obtienen acceso a las tablas son Databricks Runtime o externos que no son de Databricks.
-
Compatibilidad de características: si la tabla tiene
minReaderVersion=2,minWriterVersion=7ytableFeatures={..., columnMapping}, elSET MANAGEDcomando produce unDELTA_TRUNCATED_TRANSACTION_LOGerror. Compruebe si la tabla tiene estas propiedades medianteDESCRIBE DETAIL. Consulte Compatibilidad y protocolos de características de Delta Lake.
Después de la conversión, las lecturas y escrituras basadas en ruta se redirigen automáticamente a la nueva ubicación gestionada con una ligera sobrecarga de rendimiento. Databricks recomienda migrar todo el acceso basado en rutas de acceso al acceso basado en nombres para evitar la sobrecarga de rendimiento. Consulte Redirección basada en rutas.
Importante
Para evitar conflictos, cancele los trabajos de comando existentes OPTIMIZE (agrupación en clústeres líquidos, compactación, ZORDER) que funcionen en la tabla externa y no programe ningún trabajo mientras convierte las tablas externas en tablas administradas.
Tablas externas
Importante
La conversión de una tabla externa en una tabla administrada se encuentra en versión preliminar pública.
La conversión de tablas externas en tablas administradas tiene los siguientes requisitos previos:
- Formato de datos: la tabla externa debe usar el formato Delta Lake. Para realizar una conversión única para Parquet, consulte Conversión a Delta Lake.
- Runtime: Databricks Runtime 17.3 o superior.
- Tipo de tabla: El tipo de tabla del metastore de Hive (HMS) debe ser una tabla HMS externa. El comando produce un error si la tabla es una tabla HMS administrada.
-
Permisos: Permisos
OWNERoMANAGEsobre la tabla y permisoCREATEsobre elEXTERNAL LOCATION.
Tiempos de inactividad y copia de datos
El SET MANAGED comando minimiza o elimina el tiempo de inactividad en comparación con los enfoques alternativos, como DEEP CLONE.
Tablas externas
El proceso de conversión de tablas externas usa un enfoque de dos pasos:
- Copia inicial de datos (sin tiempo de inactividad): el comando copia los datos de la tabla y el registro de transacciones delta desde la ubicación externa a la ubicación administrada. Los lectores y escritores activos de la tabla externa siguen funcionando sin interrupción.
- Cambiar a la ubicación administrada (breve tiempo de inactividad): las confirmaciones realizadas en la ubicación externa durante el primer paso se mueven a la ubicación administrada y los metadatos de la tabla se actualizan para registrar la nueva ubicación administrada. Durante este paso, todas las escrituras en la ubicación externa se bloquean temporalmente, resultando en tiempo de inactividad para el escritor. Los lectores de Databricks Runtime 16.4 LTS o versiones posteriores no experimentan ningún tiempo de inactividad, pero los lectores de Databricks Runtime 15.4 LTS y versiones posteriores podrían experimentar tiempo de inactividad.
En la tabla siguiente se muestra el tiempo de inactividad estimado en función del tamaño de la tabla de origen y una tasa de rendimiento estimada de 0,5 a 2 GB/núcleo de CPU/minuto:
| Tamaño de la tabla | Tamaño de clúster recomendado | Tiempo estimado de copia de datos | Tiempo de inactividad estimado del lector y del escritor |
|---|---|---|---|
| 100 GB o menos | Almacén SQL de 32 núcleos / X-Grande | ~6 min o menos | ~1-2 min o menos |
| 1 TB (terabyte) | 64 núcleos / Almacén de datos SQL de tamaño 2X-Large | ~30 minutos | ~1-2 min |
| 10 TB | 256 núcleos / Almacén de datos SQL de tamaño 4X-Large | ~1,5 horas | ~1-5 minutos |
Nota:
El tiempo de inactividad puede variar en función de factores como el tamaño del archivo, el número de archivos y el número de confirmaciones.
Tablas externas
El tiempo de inactividad de la conversión de tablas externas depende de si se utiliza MOVE o COPY:
- En el caso de
MOVE, pueden producirse tiempos de inactividad tal y como se describe para las tablas externas. Consulte Tablas externas. - Para
COPY, es responsable de administrar el tiempo de inactividad porque el proceso de conversión copia la tabla de origen en la ubicación de almacenamiento administrada, creando dos copias independientes de los datos. Es responsable de deshabilitar las lecturas y escrituras en la tabla de origen del catálogo externo y migrar las cargas de trabajo para usar la nueva tabla administrada.
Conversión en una tabla administrada
Convierta una tabla externa mediante el Explorador de catálogos o SQL, o bien convierta una tabla externa mediante SQL.
Tablas externas mediante el Explorador de catálogos (Beta)
Importante
La conversión externa a tablas administradas mediante el Explorador de catálogos está en Beta.
Con el Explorador de catálogos, puede convertir una o varias tablas externas en un esquema a la vez.
Vaya a la tabla o esquema que desea convertir en el Explorador de catálogos.
En Acerca de esta tabla (página de detalles de tabla) o Acerca de este esquema (página de detalles del esquema), haga clic en Explorar optimizaciones.
En el cuadro de diálogo ¿Por qué migrar a tablas administradas por el catálogo de Unity? , haga clic en Continuar.
Seleccione las tablas externas que desea convertir. Si abrió el cuadro de diálogo desde la página de detalles de una tabla, Catalog Explorer preselecciona la tabla. Use la barra de búsqueda para buscar tablas adicionales. Las tablas administradas no se pueden seleccionar.
Haga clic en Crear cuaderno de conversión.
Opcionalmente, escriba un nombre para el cuaderno. De forma predeterminada, guarda el cuaderno en la carpeta principal. Haga clic en Examinar para guardarlo en otra ubicación.
En el cuaderno, revise los procedimientos recomendados y compruebe que cumple todos los requisitos previos.
Ejecute la celda SET MANAGED Queries.
Una vez que se ejecuta la celda, el tipo de tabla se muestra como ADMINISTRADO en lugar de EXTERNAL en el Explorador de catálogos. Actualice la página si el estado no se actualiza inmediatamente.
Tablas externas mediante SQL
En función de si la tabla externa tiene habilitadas las lecturas de Apache Iceberg (UniForm), ejecute uno de los siguientes comandos. Para comprobar si la tabla tiene habilitadas las lecturas de Iceberg, consulte Comprobar que las lecturas de Iceberg están habilitadas.
En el caso de las tablas externas de Catálogo de Unity sin lecturas de Iceberg habilitadas, ejecute el siguiente comando:
ALTER TABLE catalog.schema.my_external_table SET MANAGED;Después de la conversión, puede habilitar las lecturas de Iceberg en la tabla administrada sin problemas de compatibilidad.
Para las tablas externas de Unity Catalog con la lectura de Iceberg ya habilitada, ejecute el siguiente comando:
ALTER TABLE catalog.schema.my_external_table SET MANAGED TRUNCATE UNIFORM HISTORY;Incluya
TRUNCATE UNIFORM HISTORYpara mantener un rendimiento y compatibilidad óptimos de las tablas.TRUNCATE UNIFORM HISTORYtrunca únicamente el historial de UniForm Iceberg y no elimina el historial de Delta. Este comando provoca un breve periodo de inactividad en las operaciones de lectura y escritura de Iceberg tras el truncamiento.
Después de la conversión de tabla, se produce un error en las secuencias de lectura y escritura existentes. Reinicie los flujos con las mismas configuraciones para usar automáticamente el redireccionamiento basado en ruta. Compruebe que los lectores y escritores trabajen con la tabla administrada. Consulte Comportamiento de streaming.
La optimización predictiva se habilita automáticamente después de la conversión a menos que la desactive manualmente. Consulte Comprobación de si la optimización predictiva está habilitada.
Azure Databricks conserva los datos en la ubicación externa del catálogo de Unity durante 14 días para permitir la reversión. Consulte Cómo revertir la conversión de una tabla administrada. Después de 14 días, con la optimización predictiva habilitada, Azure Databricks elimina automáticamente estos datos para recuperar el almacenamiento y ahorrar costos. Si desactiva la optimización predictiva, ejecute VACUUM (requiere Databricks Runtime 17.3 LTS o posterior o proceso sin servidor) en la tabla administrada recién convertida después de 14 días para reclamar el almacenamiento usted mismo.
VACUUM my_converted_table
Nota:
Incluso con la optimización predictiva habilitada, es posible que los datos de la ubicación externa del catálogo de Unity no se eliminen después de 14 días. Por ejemplo, esto puede ocurrir cuando la tabla administrada se usa con poca frecuencia o es pequeña. Si los datos anteriores permanecen, ejecute VACUUM manualmente para quitarlos.
Azure Databricks elimina solo los datos de la ubicación externa. El registro de transacciones delta y la referencia a la tabla del catálogo de Unity se conservan.
Tablas foráneas que usan SQL
Importante
La conversión de una tabla externa en una tabla administrada se encuentra en versión preliminar pública.
Para convertir la tabla externa del catálogo de Unity en una tabla gestionada por Unity Catalog, ejecute el siguiente comando:
ALTER TABLE source_table SET MANAGED {MOVE | COPY}
source_table
Una tabla foránea existente federada en Unity Catalog.
MOVEConvierte la tabla en administrada y deshabilita el acceso a la tabla de origen en el catálogo externo.
El acceso a través del catálogo externo o el acceso basado en rutas falla después de convertir la tabla. Todos los lectores y escritores de la tabla deben utilizar el espacio de nombres de Unity Catalog para acceder. Por ejemplo:
SELECT * FROM catalog_name.schema_name.table_name;El acceso basado en rutas no es compatible y genera un error tras convertir la tabla. Por ejemplo:
SELECT * FROM delta.`protocol://path/to/table`;Los requisitos de compatibilidad de cliente y versión de lector/escritor son los mismos que se describen en Requisitos previos y Lectores y escritores heredados.
La optimización predictiva se establece en
INHERITmenos que la configure manualmente. Para comprobar si la optimización predictiva está habilitada, consulte Comprobación de si la optimización predictiva está habilitada.
COPYConvierte la tabla en administrada sin modificar ni deshabilitar el acceso a la tabla de origen en el catálogo externo.
- Durante la conversión a administrada, el proceso de conversión copia los datos de la tabla de origen en la ubicación de almacenamiento administrada definida para la tabla externa, creando dos copias independientes: la nueva tabla administrada y la tabla de origen en el catálogo externo.
- A diferencia de
MOVEdónde se produce un error en las lecturas y escrituras, al usarCOPY, es responsable de deshabilitar correctamente las lecturas y escrituras en la tabla de origen del catálogo externo y asegurarse de que las cargas de trabajo se han migrado al nuevo catálogo.
Tras la conversión de la tabla, debes reiniciar cualquier trabajo de streaming (de lectura o escritura) que utilice la tabla externa y verificar que tus procesos de lectura y escritura funcionen con la tabla administrada.
Antes de la conversión, si elimina la tabla de origen del catálogo externo, Unity Catalog también elimina la tabla foránea. Después de convertir la tabla en administrada, quitar la tabla de origen en el catálogo externo no afecta a la tabla administrada del catálogo de Unity.
Si el comando se interrumpe durante la copia de datos, reinícielo. El comando continúa desde donde se quedó.
Advertencia
Databricks recomienda evitar ejecutar varios SET MANAGED comandos simultáneamente en la misma tabla, lo que puede provocar un estado de tabla incoherente.
Comprobación de la conversión
Para comprobar que la tabla se ha convertido correctamente en una tabla administrada, compruebe si la tabla Type es MANAGED. Puede hacer cualquiera de las siguientes acciones:
Abra una nueva pestaña y vaya al Explorador de catálogos. En la pestaña Detalles , en Acerca de esta tabla, el tipo de tabla se muestra como Administrado.
Ejecute el siguiente comando SQL para comprobar la tabla
Type:DESCRIBE EXTENDED catalog_name.schema_name.table_namePara comprobar varias tablas a la vez o automatizar la comprobación mediante un script, consulte
information_schema.tablesen su lugar:SELECT table_type FROM system.information_schema.tables WHERE table_catalog = 'catalog_name' AND table_schema = 'schema_name' AND table_name = 'table_name';
Lectores y escritores antiguos
Databricks recomienda actualizar todos los lectores y escritores a Databricks Runtime 15.4 LTS o superior para usar todas las capacidades de SET MANAGED, incluida la retención del historial de tablas.
Todavía puede usar SET MANAGED si tiene lectores o escritores en Databricks Runtime 15.3 o inferior. No obstante, tras convertir la tabla en una tabla gestionada, solo podrá retroceder en el tiempo hasta las confirmaciones históricas por versión, y no por marca de tiempo.
Si revierte a una tabla externa en un plazo de 14 días, se vuelve a habilitar la funcionalidad de viaje en el tiempo para las confirmaciones históricas realizadas antes de la conversión. El viaje en el tiempo mediante marcas de tiempo no es compatible con las confirmaciones realizadas en la tabla administrada convertida entre la conversión y la reversión. Consulte Cómo revertir la conversión de una tabla administrada.
Escribir en una tabla tras la conversión con Databricks Runtime 15.3 o anterior requiere eliminar la característica inCommitTimestamp:
ALTER TABLE <table_name> DROP FEATURE inCommitTimestamp;
Redirección basada en ruta
En Databricks Runtime 18.1 y versiones posteriores, después de convertir una tabla externa en una tabla administrada por Unity Catalog, las lecturas y escrituras basadas en rutas de acceso en la ubicación externa anterior se redirigen automáticamente a la nueva ubicación administrada. Una lectura basada en una ruta es un código como SELECT * FROM delta.`/path/to/my_table`. La redirección basada en rutas de acceso reduce el tiempo y el esfuerzo necesarios para migrar a tablas administradas al permitir que el código heredado que use rutas de acceso de almacenamiento siga funcionando sin refactorizar.
Las conversiones de tablas externas no redirigen el acceso basado en rutas.
Para casos de uso de baja latencia, Azure Databricks recomienda migrar el acceso basado en rutas de acceso al acceso basado en nombres. La redirección basada en rutas agrega varios cientos de milisegundos de sobrecarga para cada operación de lectura o escritura basada en rutas y requiere que los Registros Delta antiguos permanezcan activos en la ubicación externa del catálogo de Unity. Las lecturas y escrituras basadas en nombres no tienen una sobrecarga de rendimiento adicional. Consulta Migrar código basado en rutas a código basado en nombres.
Migrar el código basado en rutas a código basado en nombres
Si decide no utilizar la redirección basada en rutas, puede migrar el código heredado. Para migrar, reemplace las referencias basadas en rutas de acceso por referencias basadas en nombres.
El ejemplo de código siguiente contiene una referencia de tabla basada en rutas de acceso a archivos:
SELECT * FROM delta.`/path/to/customers_table`;
Reemplace la referencia basada en ruta de acceso por una referencia basada en nombres a una tabla externa, como en el código siguiente:
SELECT * FROM catalog_name.schema_name.customers_table;
Comportamiento de streaming
El streaming con redirección basada en rutas de acceso admite lecturas y escrituras en las siguientes versiones de Databricks Runtime:
- Las lecturas se admiten en Databricks Runtime 18.1 y versiones posteriores.
- Las operaciones de escritura son compatibles en Databricks Runtime 18.2 y versiones posteriores.
Después de la conversión, debe reiniciar todos los trabajos de transmisión para evitar leer o escribir en la ubicación de la tabla anterior.
Las lecturas y escrituras basadas en rutas de acceso producen un error y se detienen en el siguiente punto de control con un mensaje de migración:
- En el caso de las lecturas, la secuencia genera un error:
DELTA_STREAMING_INTERRUPTED_BY_MANAGED_TABLE_CONVERSION: The table at <path> has been converted to a Unity Catalog managed table. The stream has been stopped to ensure data consistency. Restart the stream and it will automatically resume from the last committed offset using the converted table. - En el caso de las escrituras, el primer microproceso después de la conversión genera un error:
Operation not allowed: STREAMING WRITE cannot be performed on a table with redirect feature. The no redirect rules are not satisfied [].
Para resolver errores, reinicie secuencias con las mismas configuraciones. El acceso basado en rutas se redirige automáticamente a la tabla administrada.
Para conocer las limitaciones de redirección basadas en rutas de acceso, consulte Limitaciones.
Solución de problemas de errores de conversión
En esta sección se describe cómo resolver problemas comunes al convertir tablas externas en tablas administradas de Catálogo de Unity mediante SET MANAGED.
VERSIONED_CLONE_INTERNAL_ERROR.EXISTING_FILE_VALIDATION_FAILED
Si se produce un error en la conversión, vuelva a intentarlo siempre con la misma versión de Databricks Runtime. Los metadatos se pueden serializar de forma diferente entre versiones, lo que provoca un VERSIONED_CLONE_INTERNAL_ERROR.EXISTING_FILE_VALIDATION_FAILED error si vuelve a intentar una conversión en otra versión de Databricks Runtime.
Desactivación del clúster durante la conversión
Si el clúster se cierra durante la conversión, es posible que se produzca un error en el comando con DELTA_ALTER_TABLE_SET_MANAGED_INTERNAL_ERROR. Vuelva a intentar el comando para reanudar la conversión.
Tabla externa dañada
Si la tabla externa ya está dañada (por ejemplo, no es un estado de tabla válido), la conversión podría producir errores como DELTA_TRUNCATED_TRANSACTION_LOG, DELTA_TXN_LOG_FAILED_INTEGRITYo DELTA_STATE_RECOVER_ERRORS. Antes de intentar la conversión, compruebe que puede ejecutar operaciones básicas en la tabla externa, como DESCRIBE DETAIL.
Error de validación de archivos
El comando SET MANAGED valida que se hayan copiado todos los archivos de la instantánea más reciente de la tabla a la nueva ubicación de la tabla administrada. Si faltan archivos, se produce un DELTA_ALTER_TABLE_SET_MANAGED_FAILED.FILE_VALIDATION_FAILED error en el comando.
Para solucionar este problema:
- Compruebe los registros del controlador de Spark para identificar qué archivos no se pudieron migrar.
- Compruebe que estos archivos existen en la ubicación de la tabla externa de origen y que son accesibles.
- Vuelva a intentar el
ALTER TABLE ... SET MANAGEDcomando.
Si el problema persiste, póngase en contacto con el soporte técnico de Databricks.
Reversión de la conversión de una tabla administrada
Importante
Los comandos de reversión requieren cómputo sin servidor o Databricks Runtime 17.3 LTS o superior.
Tabla externa
Después de convertir una tabla externa en una tabla administrada, puede revertirla en un plazo de 14 días mediante el UNSET MANAGED comando . Esto actualiza los metadatos de la tabla para que vuelvan a apuntar a la ubicación externa original. Databricks conserva todas las escrituras realizadas en la ubicación administrada después de la conversión.
Para revertir a una tabla externa, ejecute el siguiente comando:
ALTER TABLE catalog.schema.my_managed_table UNSET MANAGED;
Recuerde la siguiente información:
- Si se interrumpe o se produce un error en el comando de reversión, vuelva a ejecutarlo para reintentar.
- Debe reiniciar sus trabajos de streaming tras la reversión, al igual que en el caso de la conversión.
- Las confirmaciones realizadas en la ubicación administrada entre la conversión y la reversión permiten el desplazamiento del tiempo por versión, pero no por marca de tiempo.
- Siete días después de la reversión, Azure Databricks elimina automáticamente los datos en la ubicación administrada.
Tabla externa: MOVE
Advertencia
Debe ejecutar UNSET MANAGED antes de eliminar la tabla gestionada. Eliminar la tabla sin ejecutar UNSET MANAGED primero podría provocar pérdida de datos o inconsistencias.
Puede revertir la migración de la tabla y recuperar el acceso a la tabla de origen del catálogo externo mediante el UNSET MANAGED comando . La reversión requiere dos pasos: primero debe revertir la tabla a una tabla externa y, a continuación, eliminar la tabla externa para volver a federar la tabla como tabla externa.
- Para revertir a una tabla externa, ejecute el siguiente comando:
ALTER TABLE catalog.schema.my_managed_table UNSET MANAGED
- Para volver a federar la tabla con una tabla remota, elimine la tabla externa con el siguiente comando:
DROP TABLE catalog.schema.my_managed_table
La tabla externa está disponible después de la siguiente sincronización del catálogo.
Recuerde la siguiente información:
- Para las confirmaciones que haya realizado en la ubicación externa entre la conversión y la reversión, puede realizar un viaje en el tiempo por versión, pero no por marca de tiempo.
- Siete días después de la reversión, Databricks elimina los datos en la ubicación administrada.
Tabla externa: COPY
Para revertir la migración de tablas, no es necesario ejecutar el UNSET MANAGED comando porque no se modificó la tabla de origen del catálogo externo. Quite la tabla administrada y Databricks la vuelve a federar como una tabla externa después de la siguiente sincronización del catálogo.
Comprobación de la reversión
Compruebe las reversiones de forma distinta en las tablas externas y foráneas.
Tablas externas
Para comprobar que la tabla administrada se revierte correctamente a una tabla externa, compruebe si la tabla Type es EXTERNAL. Puede hacer cualquiera de las siguientes acciones:
Abra una nueva pestaña y vaya al Explorador de catálogos. En la pestaña Detalles , en Acerca de esta tabla, la tabla Tipo se muestra como Externa.
Ejecute el siguiente comando SQL para comprobar la tabla
Type:DESCRIBE EXTENDED catalog_name.schema_name.table_namePara comprobar varias tablas a la vez o automatizar la comprobación mediante un script, consulte
information_schema.tablesen su lugar:SELECT table_type FROM system.information_schema.tables WHERE table_catalog = 'catalog_name' AND table_schema = 'schema_name' AND table_name = 'table_name';
Tablas externas
Para comprobar que la tabla administrada se revierte correctamente a una tabla externa, compruebe si la tabla Type es FOREIGN. Puede hacer cualquiera de las siguientes acciones:
Abra una nueva pestaña y vaya al Explorador de catálogos. En la pestaña Detalles , en Acerca de esta tabla, la tabla Tipo se muestra como Externa.
Para comprobar el tipo de tabla, ejecute el siguiente comando SQL:
SELECT table_type FROM system.information_schema.tables WHERE table_catalog = 'catalog_name' AND table_schema = 'schema_name' AND table_name = 'table_name';La
table_typecolumna se muestra comoFOREIGN.
Nota:
No utilices DESCRIBE EXTENDED para verificar conversiones o reversiones de tablas externas. La federación usa hive_metastore el comportamiento del catálogo para este comando, por lo que muestra la tabla Type como EXTERNAL, independientemente del estado real de la tabla.
Temas avanzados
Esta sección contiene temas avanzados para convertir tablas foráneas y externas en tablas gestionadas.
Convertir a nivel de esquema o de catálogo
Tiene las dos opciones siguientes para automatizar la conversión de tablas en el nivel de esquema o catálogo:
Recorre las tablas de tus esquemas para convertir cada tabla por separado.
Use el proyecto discoverx labs para convertir esquemas o catálogos completos a la vez:
df = (dx.from_tables("prod.*.*") .with_sql("ALTER TABLE {full_table_name} SET MANAGED;") .apply())
Consulte Databricks Labs y discoverx.
Creación de tablas en un catálogo externo
Puede crear tablas externas o administradas en un catálogo externo. El comportamiento depende de la configuración del esquema:
-
Para los esquemas Glue o eHMS, o para esquemas con una ubicación administrada establecida en el catálogo de Unity: si ejecuta
CREATE TABLE foreign_catalog.schema.table, se crea una tabla administrada o externa del catálogo de Unity. Databricks no inserta ni sincroniza la tabla con el catálogo externo. -
Para esquemas de conexiones internas de metastore de Hive: si intenta crear una tabla en un esquema extranjero, sigue creando una tabla extranjera y también crea una tabla en
hive_metastore. - Para el metastore de Hive de área de trabajo heredados: dado que cuenta con federación de lectura y escritura, si creas una tabla en el catálogo externo, también se crea una tabla en el metastore interno de Hive.
Tablas externas respaldadas por DBFS
Al convertir una tabla respaldada por DBFS, Databricks almacena la asignación actual de la ruta DBFS como la ubicación de la ruta en la nube de la tabla externa.
Limitaciones
La conversión de tablas externas o ajenas en tablas administradas tiene las siguientes limitaciones:
El historial de la tabla correspondiente a las confirmaciones de cambios realizadas después de la conversión, pero antes de la reversión, permite viajar en el tiempo por versión, pero no mediante marca de tiempo.
OpenSharing no es totalmente compatible con el
SET MANAGEDcomando . Se admite OpenSharing, pero el intercambio de Databricks a Databricks no actualiza automáticamente la ubicación administrada de la tabla destinataria. El destinatario sigue leyendo desde la ubicación antigua hasta que vuelvas a compartir la tabla. Para volver a compartir la tabla, ejecute los siguientes comandos:ALTER SHARE <share_name> REMOVE TABLE <table_name>; ALTER SHARE <share_name> ADD TABLE <table_name> AS <table_share_name> WITH HISTORY;Si la ubicación administrada predeterminada del metastore, el catálogo o el esquema del catálogo de Unity se encuentra en una región de nube diferente de la ubicación de almacenamiento de la tabla de origen, puede incurrir en costos adicionales de transferencia de datos entre regiones del proveedor de nube.
Para comprobar la ubicación del esquema y el catálogo, ejecute los siguientes comandos:
DESC SCHEMA EXTENDED <catalog_name>.<schema_name>; DESC CATALOG EXTENDED <catalog_name>;Para comprobar la ubicación de la metastore, ejecute cualquiera de los siguientes comandos:
DESC METASTORE; -- Option 1 SELECT * FROM system.information_schema.metastores; -- Option 2
Limitaciones de redirección basadas en rutas de acceso:
- Debe reiniciar los trabajos de streaming después de la conversión. Consulte Comportamiento de streaming.
- La redirección basada en rutas solo ofrece compatibilidad retroactiva para el proceso de migración y no permite nuevo acceso basado en rutas a las tablas administradas de Unity Catalog.
Limitaciones de las tablas foráneas:
- Solo se admite la conversión de las tablas foráneas federadas mediante Hive metastore y Glue Federation.