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 privilegioREAD FILES
en una ubicación externa.Para obtener más información sobre la creación de volúmenes, vea ¿Qué son los volúmenes del Unity Catalog?
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.