Cargar datos mediante COPY INTO con credenciales temporales
Si el clúster de Azure Databricks o el almacén de SQL no tiene permisos para leer los archivos de origen, puede usar credenciales temporales para acceder a los datos desde el almacenamiento de objetos en la nube externo y cargar los archivos en una tabla Delta Lake.
En función de cómo administre la organización la seguridad en la nube, es posible que tenga que pedir a un administrador de la nube o un usuario avanzado que le proporcione las credenciales. Para obtener más información, consulte Generar credenciales temporales para la ingesta.
Especificación de credenciales temporales u opciones de cifrado para acceder a los datos
Nota:
Las opciones de credenciales y cifrado están disponibles en Databricks Runtime 10.4 LTS y versiones posteriores.
COPY INTO
admite lo siguiente:
- Tokens de SAS de Azure para leer datos de ADLS Gen2 y Azure Blob Storage. Los tokens temporales de Azure Blob Storage están en el nivel de contenedor, mientras que los tokens de ADLS Gen2 pueden estar en el nivel de directorio además de en el nivel de contenedor. Databricks recomienda usar tokens de SAS de nivel de directorio cuando sea posible. El token de SAS debe tener los permisos "Lectura", "Lista" y "Permisos".
- Tokens de STS de AWS para leer los datos de AWS S3. Los tokens deben tener los permisos "s3:GetObject*", "s3:ListBucket" y "s3:GetBucketLocation".
Advertencia
Para evitar el uso indebido o la exposición de credenciales temporales, Databricks recomienda establecer horizontes de expiración que sean lo suficientemente prolongados como para completar la tarea.
COPY INTO
admite la carga de datos cifrados desde AWS S3. Para cargar datos cifrados, proporcione el tipo de cifrado y la clave para descifrarlos.
Carga de datos con credenciales temporales
En el ejemplo siguiente se cargan datos de S3 y ADLS Gen2 con credenciales temporales para proporcionar acceso a los datos de origen.
COPY INTO my_json_data
FROM 's3://my-bucket/jsonData' WITH (
CREDENTIAL (AWS_ACCESS_KEY = '...', AWS_SECRET_KEY = '...', AWS_SESSION_TOKEN = '...')
)
FILEFORMAT = JSON
COPY INTO my_json_data
FROM 'abfss://container@storageAccount.dfs.core.windows.net/jsonData' WITH (
CREDENTIAL (AZURE_SAS_TOKEN = '...')
)
FILEFORMAT = JSON
Carga de datos cifrados
En el ejemplo siguiente, se cargan datos de S3 con claves de cifrado proporcionadas por el cliente.
COPY INTO my_json_data
FROM 's3://my-bucket/jsonData' WITH (
ENCRYPTION (TYPE = 'AWS_SSE_C', MASTER_KEY = '...')
)
FILEFORMAT = JSON
Carga de datos JSON con credenciales para el origen y el destino
En el ejemplo siguiente se cargan datos JSON de un archivo en Azure en la tabla Delta externa denominada my_json_data
.
Esta tabla debe crearse para que COPY INTO
pueda ejecutarse.
El comando usa una credencial existente para escribir en una tabla Delta externa y otra para leer en la ubicación ABFSS.
COPY INTO my_json_data WITH (CREDENTIAL target_credential)
FROM 'abfss://container@storageAccount.dfs.core.windows.net/base/path' WITH (CREDENTIAL source_credential)
FILEFORMAT = JSON
FILES = ('f.json')