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
Esta característica está en versión preliminar pública y solo está disponible para los clientes participantes en este momento. Para participar en la versión preliminar, aplíquelo rellenando este formulario. Esta característica solo admite la conversión de tablas externas federadas mediante HMS y Glue Federation.
En esta página se describe cómo usar SET MANAGED para convertir una tabla externa en una tabla administrada.
- Para obtener más información sobre cómo convertir una tabla externa en una tabla administrada, consulte Conversión de una tabla externa en una tabla de catálogo de Unity administrada.
- Para obtener más información sobre cómo convertir una tabla externa en una tabla externa, consulte Conversión de una tabla externa en una tabla de catálogo de Unity externa.
Información general de SET MANAGED
Use la SET MANAGED característica para convertir una tabla externa en una tabla administrada de Unity Catalog en Azure Databricks.
SET MANAGED ofrece las ventajas siguientes:
- Conservar el historial de tablas.
- Mantener las mismas configuraciones de tabla, incluidos el mismo nombre, configuración, permisos y vistas.
- Beneficiarse de la optimización predictiva. Al convertir una tabla en administrada, la optimización predictiva se establece en
INHERIT, lo que significa que hereda la configuración del nivel de esquema o catálogo. De forma predeterminada, esto está deshabilitado actualmente. Puede habilitar la optimización predictiva en la tabla convertida mediante la ejecuciónALTER TABLE <table_name> ENABLE PREDICTIVE OPTIMIZATIONde , que lo establece enENABLEDen lugar deINHERIT.
Prerrequisitos
- Formato de datos: el formato de datos de la tabla externa debe ser Delta Lake. Para realizar una conversión única para Parquet, consulte Conversión a Delta Lake.
- Tipo de tabla: el tipo de tabla HMS debe ser una tabla externa HMS. El comando produce un error si la tabla es una tabla HMS administrada.
- Runtime: Databricks Runtime 17.3 o superior
-
Permisos:
OWNERoMANAGEpermisos en la tabla yCREATEel permiso enEXTERNAL LOCATION
Syntax
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}
Parámetros
source_table
Una tabla externa existente en el catálogo de Unity. Las tablas externas contienen datos y metadatos administrados por un catálogo externo. Antes de la conversión, si elimina la tabla de origen en el catálogo externo, la tabla externa de referencia también se elimina en el Unity Catalog. Después de convertir la tabla en administrada, eliminar la tabla de origen en el catálogo externo no afecta a la tabla administrada del 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 ruta falla después de que la tabla se convierte. Todos los lectores y escritores de la tabla deben utilizar el espacio de nombres de Unity Catalog para acceder.
Todos los lectores y escritores deben usar el acceso basado en nombres. Por ejemplo:
SELECT * FROM catalog_name.schema_name.table_name;No se admite el acceso basado en rutas y falla después de convertir la tabla. Por ejemplo:
SELECT * FROM delta.`protocol://path/to/table`;Los clientes externos (que no son de Azure Databricks) deben admitir lecturas en tablas administradas de Unity Catalog. Consulte Modo de compatibilidad.
Use el panel de Access Insights para ver si los lectores y escritores que acceden a las tablas son Databricks Runtime o clientes externos que no son de Azure Databricks.
Los lectores y escritores de Azure Databricks deben usar Databricks Runtime 15.4 LTS o superior. Si los lectores o escritores usan Databricks Runtime 14.3 LTS o versiones posteriores, consulte Opción alternativa para lectores y escritores en Databricks Runtime 14.3 LTS o versiones posteriores.
El tiempo de inactividad puede ocurrir cuando quienes leen o escriben acceden a una tabla durante la conversión. Para obtener más información, vea Convertir una tabla externa en una tabla de catálogo de Unity administrada.
Si se interrumpe el comando, la tabla podría dejarse como una tabla externa, ya que la conversión a administrada estaba incompleta. Para completar el comando, vuelva a ejecutar
SET MANAGEDen la tabla externa.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.Reversión: para revertir la migración de la tabla y recuperar el acceso a la tabla de origen en el catálogo externo, ejecute el
UNSET MANAGEDcomando . La tabla se convierte en una tabla externa después de ejecutar el comando . Para devolver la tabla a una tabla externa, quite la tabla y se volverá a federar como externa en la siguiente sincronización del catálogo.ALTER TABLE catalog.schema.my_managed_table UNSET MANAGEDAdvertencia
Debe ejecutar
UNSET MANAGEDantes de quitar la tabla. Eliminar la tabla sin ejecutarUNSET MANAGEDprimero puede dejar el sistema en un estado inestable y puede provocar pérdida de datos o incoherencias.Si realiza un rollback, las confirmaciones que realizó en la ubicación externa entre la conversión y el rollback son accesibles por versión, pero no por marca de tiempo. Siete días después de la reversión, se eliminan los datos de la ubicación administrada. Para lectores y escritores en Databricks Runtime 15.4 LTS o versiones posteriores, el historial de tablas de confirmaciones realizadas después de la conversión, pero antes de la reversión es desplazable por versión, pero no por marca de tiempo.
Después de la conversión de tablas, deberá:
- Reinicie los trabajos de transmisión (lectura o escritura) utilizando la tabla externa.
- Asegúrese de que los lectores y escritores trabajen con la tabla administrada.
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, los datos de la tabla de origen se copian 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. -
Reversión: para revertir la migración de la tabla, no es necesario ejecutar el
UNSET MANAGEDcomando, ya que la tabla de origen no se ha interrumpido en el catálogo externo. Elimine la tabla y se federará nuevamente como extranjera en la siguiente sincronización del catálogo.
Comprobación de la conversión
Puede confirmar que la tabla externa se ha convertido en una tabla administrada:
DESCRIBE EXTENDED catalog_name.schema_name.table_name
Si la tabla se ha convertido, el Type bajo col_name se muestra como MANAGED bajo data_type.
Limitaciones conocidas
La conversión de tablas externas en tablas administradas tiene las siguientes limitaciones:
Clientes de streaming: debe reiniciar los trabajos de streaming después de la conversión.
Varias regiones de nube: 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 externa que se está convirtiendo, puede incurrir en costos adicionales de transferencia de datos entre regiones. El proveedor de nube impone estos cargos fuera del control de Azure Databricks. Para comprobar las ubicaciones del esquema, el catálogo y la metastore, use los siguientes comandos:
-- Check schema location DESCRIBE SCHEMA EXTENDED catalog_name.schema_name; -- Check catalog location DESCRIBE CATALOG EXTENDED catalog_name; -- Check metastore location DESCRIBE METASTORE;
Preguntas más frecuentes
¿Puedo crear tablas, así como convertir tablas en un catálogo externo?
Sí, 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. La tabla no se envía ni se sincroniza 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 la área de trabajo heredada: dado que es una federación de lectura y escritura, si se crea una tabla en el catálogo externo, también se crea una tabla en el metastore interno de Hive.
¿Qué ocurre si mis tablas externas están respaldadas por DBFS?
Al convertir una tabla respaldada por DBFS, almacenamos la asignación actual de la ruta de acceso de DBFS a la ruta de acceso a la nube como ubicación de la ruta de acceso a la nube de la tabla externa.
¿Puedo cambiar al nivel de esquema o catálogo?
Puede recorrer en iteración las tablas de los esquemas para convertir individualmente o usar el proyecto discoverx labs para convertir esquemas completos o catálogos a la vez:
df = (dx.from_tables("prod.*.*")
.with_sql("ALTER TABLE {full_table_name} SET MANAGED;")
.apply())