Clonación superficial para tablas de Unity Catalog

Importante

El soporte de clonación superficial con las tablas administradas del Unity Catalog está en versión preliminar pública en Databricks Runtime 13.3 y versiones posteriores. La compatibilidad con clonación superficial para tablas externas de Unity Catalog se encuentra en versión preliminar pública en Databricks Runtime 14.2 y versiones posteriores.

Puede usar la clonación superficial para crear nuevas tablas de Unity Catalog a partir de tablas existentes de Unity Catalog. La compatibilidad superficial con clones para Unity Catalog permite crear tablas con privilegios de control de acceso independientes de sus tablas primarias sin necesidad de copiar archivos de datos subyacentes.

Importante

Solo puede clonar tablas administradas de Unity Catalog en tablas administradas de Unity Catalog y tablas externas de Unity Catalog en tablas externas de Unity Catalog. El comportamiento de VACUUM difiere entre las tablas administradas y externas. Clones superficiales de Vacuum y Unity Catalog.

Para más información sobre el clon delta, consulte Clonación de una tabla en Azure Databricks.

Para obtener más información sobre las tablas del catálogo de Unity, consulte Creación de tablas en el catálogo de Unity.

Crear un clon superficial en Unity Catalog

Puede crear un clon superficial en Unity Catalog con la misma sintaxis disponible para clones poco profundos en todo el producto, como se muestra en el ejemplo de sintaxis siguiente:

CREATE TABLE <catalog-name>.<schema-name>.<target-table-name> SHALLOW CLONE <catalog-name>.<schema-name>.<source-table-name>

Para crear un clon superficial en Unity Catalog, debe tener privilegios suficientes en los recursos de origen y de destino, como se detalla en la tabla siguiente:

Recurso Permisos requeridos
Tabla de origen SELECT
Esquema de origen USE SCHEMA
Catálogo de origen USE CATALOG
Esquema de destino USE SCHEMA, CREATE TABLE
Catálogo de destino USE CATALOG
Ubicación externa de destino (solo tablas externas) CREATE EXTERNAL TABLE

Al igual que otras sentencias de crear tabla, el usuario que crea un clon superficial es el propietario de la tabla de destino. El propietario de una tabla clonada de destino puede controlar los derechos de acceso de esa tabla independientemente de la tabla de origen.

Nota:

El propietario de una tabla clonada podría ser diferente del propietario de una tabla de origen.

Consulta o modificación de una tabla clonada superficial en Unity Catalog

Importante

En las instrucciones de esta sección se describen los privilegios necesarios para el proceso configurado con el modo de acceso compartido. Para el modo de acceso de usuario único, consulte Trabajar con tablas clonadas poco profundas en modo de acceso de usuario único.

Para consultar un clon superficial en Unity Catalog, debe tener suficientes privilegios en la tabla y contener recursos, como se detalla en la tabla siguiente:

Recurso Permisos requeridos
Catálogo USE CATALOG
Esquema USE SCHEMA
Tabla SELECT

También debe tener permisos en el destino MODIFY de la operación de clonación para completar las siguientes acciones:

  • Insertar registros
  • Eliminar registros
  • Registros de actualización
  • MERGE
  • CREATE OR REPLACE TABLE
  • DROP TABLE

Clones superficiales de Vacuum y Unity Catalog

Importante

Este comportamiento se encuentra en versión preliminar pública en Databricks Runtime 13.3 LTS y versiones posteriores para tablas administradas y Databricks Runtime 14.2 y versiones posteriores para tablas externas.

Cuando se usan tablas de Unity Catalog para el origen y el destino de una operación de clonación superficial, Unity Catalog administra los archivos de datos subyacentes para mejorar la confiabilidad para el origen y el destino de la operación de clonación. La ejecución VACUUM en el origen de un clon superficial no interrumpe la tabla clonada.

Normalmente, cuando VACUUM identifica archivos válidos para un umbral de retención determinado, solo se tienen en cuenta los metadatos de la tabla actual. La compatibilidad superficial con clones para Unity Catalog realiza un seguimiento de las relaciones entre todas las tablas clonadas y los archivos de datos de origen, por lo que los archivos válidos se expanden para incluir los archivos de datos necesarios para devolver consultas para cualquier tabla clonada superficial, así como la tabla de origen.

Esto quiere decir que para la semántica de clonación VACUUM superficial de Unity Catalog, un archivo de datos válido es cualquier archivo dentro del umbral de retención especificado para la tabla de origen o cualquier tabla clonada. Las tablas administradas y externas tienen una semántica ligeramente diferente.

Este seguimiento mejorado de los metadatos cambia cómo VACUUM afectan las operaciones a los archivos de datos que respaldan las tablas Delta, con la semántica siguiente:

  • En el caso de las tablas administradas, las operaciones VACUUM en el origen o el destino de una operación de clonación superficial pueden eliminar archivos de datos de la tabla de origen.
  • En el caso de las tablas externas, las operaciones VACUUM solo quitan archivos de datos de la tabla de origen cuando se ejecutan en la tabla de origen.
  • Solo se quitan los archivos de datos no considerados válidos para la tabla de origen o cualquier clon superficial en el origen.
  • Si se definen varios clones superficiales en una sola tabla de origen, la ejecución VACUUM en cualquiera de las tablas clonadas no quita archivos de datos válidos para otras tablas clonadas.

Nota:

Databricks recomienda nunca ejecutar VACUUM con una configuración de retención de menos de 7 días para evitar dañar las transacciones de larga duración en curso. Si necesita ejecutar VACUUM con un umbral de retención inferior, asegúrese de comprender cómo VACUUM en clones poco profundos de Unity Catalog difiere de cómo VACUUM interactúa con otras tablas clonadas en Azure Databricks. Consulte Clonación de una tabla en Azure Databricks.

Trabajar con tablas clonadas de poca profundidad en modo de acceso de usuario único

Al trabajar con clones superficiales de Unity Catalog en modo de acceso de usuario único, debe tener permisos en los recursos para el origen de la tabla clonada, así como en la tabla de destino.

Esto significa que para consultas sencillas además de los permisos necesarios en la tabla de destino, debe tener USE permisos en el catálogo de origen y el esquema y los SELECT permisos en la tabla de origen. Para cualquier consulta que pueda actualizar o insertar registros en la tabla de destino, también debe tener permisos en MODIFY la tabla de origen.

Databricks recomienda trabajar con clones de Unity Catalog en proceso con modo de acceso compartido, ya que esto permite una evolución independiente de los permisos para los destinos de clonación superficial de Unity Catalog y sus tablas de origen.

Limitaciones

  • Los clones superficiales en tablas externas deben ser tablas externas. Los clones superficiales en tablas administradas deben ser tablas administradas.
  • No se pueden compartir clones poco profundos mediante el uso compartido de Delta.
  • No se pueden anidar clones poco profundos, lo que significa que no se puede hacer un clon superficial a partir de un clon superficial.
  • En el caso de las tablas administradas, al quitar la tabla de origen se interrumpe la tabla de destino para clones superficiales. Las operaciones DROP TABLE no quitan los archivos de datos que respaldan tablas externas, por lo que los clones superficiales de tablas externas no se ven afectados al quitar el origen.
  • El Unity Catalog permite a los usuarios tablas administradas UNDROP durante unos 7 días después de un comando DROP TABLE. En Databricks Runtime 13.3 LTS y superiores, los clones superficiales administrados basados en una tabla administrada anulada siguen funcionando durante este periodo de 7 días. Si no UNDROP la tabla de origen de esta ventana, el clon superficial deja de funcionar una vez que se recopilan los archivos de datos de la tabla de origen.