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.
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.
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.
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 VOLUMEen un volumen o un privilegioREAD FILESen 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 obtener más información sobre la creación de ubicaciones externas, consulte Información general sobre las ubicaciones externas.Ruta a tus datos de origen en forma de URL de almacenamiento de objetos en la nube o ruta 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 SCHEMAen el esquema que contiene la tabla de destino.Privilegio
USE CATALOGen el catálogo primario.
Para obtener más información sobre los privilegios del catálogo de Unity, consulte Referencia de privilegios del catálogo de Unity.
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 con la ruta /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;
El prefijo de esquema dbfs: también se admite con rutas de acceso de volumen (por ejemplo, dbfs:/Volumes/...), pero Databricks recomienda usar el formato de ruta de acceso /Volumes/ que se muestra arriba.
Cargar datos mediante una ubicación externa
Note
Databricks recomienda usar volúmenes para acceder a archivos en el almacenamiento en la nube. Se admiten ubicaciones externas, pero no son el enfoque recomendado. Consulte Tablas administradas y externas.
En el ejemplo siguiente se cargan datos de ADLS en una tabla mediante ubicaciones externas del catálogo de Unity para proporcionar acceso a los datos de origen.
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 'abfss://container@storageAccount.dfs.core.windows.net'
FILEFORMAT = PARQUET;
COPY INTO sibling_table
FROM 'abfss://container@storageAccount.dfs.core.windows.net/json-data'
FILEFORMAT = JSON;
Espacio de nombres de tres niveles para tablas de destino
Puede tener como destino una tabla de catálogo de Unity mediante un espacio de nombres de tres niveles (<catalog_name>.<schema_name>.<table_name>). Use los USE CATALOG <catalog_name> comandos y USE SCHEMA <schema_name> para establecer el catálogo y el esquema predeterminados para la consulta o cuaderno actual.
En el ejemplo siguiente se cargan datos de un volumen en una tabla mediante el espacio de nombres de tres niveles:
COPY INTO quickstart_catalog.quickstart_schema.landing_table
FROM '/Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/raw_data'
FILEFORMAT = PARQUET;
También puede establecer primero el catálogo y el esquema predeterminados:
USE CATALOG quickstart_catalog;
USE SCHEMA quickstart_schema;
COPY INTO landing_table
FROM '/Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/raw_data'
FILEFORMAT = PARQUET;