Compartir vía


Carga de datos mediante COPY INTO con volúmenes de Catálogo de Unity o ubicaciones externas

Obtenga información sobre cómo usar COPY INTO para ingerir datos en tablas externas o administradas de Unity Catalog desde cualquier formato de archivo y origen 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 cómo usar el COPY INTO comando para cargar datos desde un contenedor de Azure Data Lake Storage (ADLS) en 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 del catálogo de Unity o una ubicación externa para que pueda acceder a los archivos de origen en ADLS. Si su administrador configuró un recurso de cálculo para usar una entidad de servicio, puede consultar Cargar datos utilizando COPY INTO una entidad de servicio o Tutorial: COPY INTO con Spark SQL en su lugar. Si el administrador le dio credenciales temporales (un token SAS de Blob), siga los pasos descritos en Carga de datos mediante COPY INTO con credenciales temporales.

Antes de empezar

Antes de usar COPY INTO para cargar datos desde un volumen de Unity Catalog o desde una ruta de almacenamiento de objetos en la nube que esté definida como ubicación externa en el Unity Catalog, debe 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 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 datos de ADLS 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.