Carga de datos mediante COPY INTO con volúmenes o ubicaciones externas de Unity Catalog

Aprenda a usar COPY INTO para ingerir datos en tablas administradas o externas de Unity Catalog desde cualquier formato de origen y archivo compatible con COPY INTO. Unity Catalog agrega nuevas opciones para configurar el acceso seguro a los datos sin procesar. Puede usar volúmenes de Unity Catalog o ubicaciones externas para acceder a los datos en el almacenamiento de objetos en la nube.

Databricks recomienda usar volúmenes para acceder a archivos en el almacenamiento en la nube como parte del proceso de ingesta mediante COPY INTO. Para obtener más información sobre las recomendaciones para usar volúmenes y ubicaciones externas, consulte Procedimientos recomendados de Unity Catalog.

En este artículo se describe el uso del comando COPY INTO para cargar datos desde un contenedor de Azure Data Lake Storage Gen2 (ADLS Gen2) de la cuenta de Azure en una tabla de Databricks SQL.

En los pasos de este artículo se supone que el administrador ha configurado un volumen de Unity Catalog o una ubicación externa para que pueda acceder a los archivos de origen en ADLS Gen2. Si el administrador configuró un recurso de proceso para usar una entidad de servicio, consulte Carga de datos mediante COPY INTO con una entidad de servicio o Tutorial: COPY INTO con Spark SQL en su lugar. Si el administrador le ha dado credenciales temporales (un token de SAS de blob), siga los pasos descritos en Carga de datos mediante COPY INTO con credenciales temporales en su lugar.

Antes de empezar

Antes de usar COPY INTO para cargar los datos desde un volumen del catálogo de Unity o desde una ruta de acceso de almacenamiento de objetos en la nube definida como una ubicación externa del catálogo de Unity, deberá tener lo siguiente:

  • Un privilegio READ VOLUME en un volumen o un privilegio READ FILES en una ubicación externa.

    Para obtener más información acerca de la creación de volúmenes, consulte Crear volúmenes y trabajar con ellos.

    Para más información sobre la creación de ubicaciones externas, consulte Creación de una ubicación externa para conectar el almacenamiento en la nube a Azure Databricks.

  • Ruta de acceso a los datos de origen en forma de una dirección URL de almacenamiento de objetos en la nube o una ruta de acceso de volumen.

    Direcciones URL de almacenamiento de objetos en la nube de ejemplo: abfss://container@storageAccount.dfs.core.windows.net/raw-data/json.

    Ruta de acceso de volumen de ejemplo: /Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/raw_data/json.

  • Privilegio USE SCHEMA en el esquema que contiene la tabla de destino.

  • Privilegio USE CATALOG en el catálogo primario.

Para más información sobre los privilegios de Unity Catalog, consulte Privilegios de Unity Catalog y objetos protegibles.

Carga de datos desde un volumen

Para cargar datos de un volumen de Unity Catalog, debe tener el privilegio READ VOLUME. Los privilegios de volumen se aplican a todos los directorios anidados en el volumen especificado.

Por ejemplo, si tiene acceso a un volumen que se define con la ruta de acceso /Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/, los siguientes comandos son válidos:

COPY INTO landing_table
FROM '/Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/raw_data'
FILEFORMAT = PARQUET;

COPY INTO json_table
FROM '/Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/raw_data/json'
FILEFORMAT = JSON;

Opcionalmente, también puede usar una ruta de acceso de volumen con el esquema dbfs. Por ejemplo, los siguientes comandos son también válidos:

COPY INTO landing_table
FROM 'dbfs:/Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/raw_data'
FILEFORMAT = PARQUET;

COPY INTO json_table
FROM 'dbfs:/Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/raw_data/json'
FILEFORMAT = JSON;

Cargar datos mediante una ubicación externa

En el ejemplo siguiente, se cargan los datos de ADLS Gen2 en una tabla mediante ubicaciones externas del catálogo de Unity para proporcionar acceso al código fuente.

COPY INTO my_json_data
FROM 'abfss://container@storageAccount.dfs.core.windows.net/jsonData'
FILEFORMAT = JSON;

Herencia de privilegios de ubicación externa

Los privilegios de ubicación externa se aplican a todos los directorios anidados en la ubicación especificada.

Por ejemplo, si tiene acceso a una ubicación externa que se define con la URL abfss://container@storageAccount.dfs.core.windows.net/raw-data, los siguientes comandos son válidos:

COPY INTO landing_table
FROM 'abfss://container@storageAccount.dfs.core.windows.net/raw-data'
FILEFORMAT = PARQUET;

COPY INTO json_table
FROM 'abfss://container@storageAccount.dfs.core.windows.net/raw-data/json'
FILEFORMAT = JSON;

Los permisos en esta ubicación externa no conceden ningún privilegio en directorios anteriores o paralelos a la ubicación especificada. Por ejemplo, ninguno de los siguientes comandos es válido:

COPY INTO parent_table
FROM 's3://landing-bucket'
FILEFORMAT = PARQUET;

COPY INTO sibling_table
FROM 's3://landing-bucket/json-data'
FILEFORMAT = JSON;

Espacio de nombres de tres niveles para tablas de destino

Puede tener como destino una tabla de Unity Catalog mediante un identificador de tres niveles (<catalog_name>.<database_name>.<table_name>). Puede usar los comandos USE CATALOG <catalog_name> y USE <database_name> para establecer el catálogo y la base de datos predeterminados para la consulta o cuaderno actuales.