使用 COPY INTO 和临时凭据加载数据
如果你的 Azure Databricks 群集或 SQL 仓库无权读取源文件,则可以使用临时凭据访问外部云对象存储中的数据,并将文件加载到 Delta Lake 表中。
根据组织管理云安全性的方式,可能需要要求云管理员或 Power 用户提供凭据。 有关详细信息,请参阅生成临时凭据以进行引入。
指定临时凭据或加密选项以访问数据
注意
凭据和加密选项适用于 Databricks Runtime 10.4 LTS 和更高版本。
COPY INTO
支持:
- Azure SAS 令牌,用于从 ADLS Gen2 和 Azure Blob 存储读取数据。 Azure Blob 存储临时令牌位于容器级别,而 ADLS Gen2 令牌除了容器级别之外还可以位于目录级别。 Databricks 建议尽可能使用目录级 SAS 令牌。 SAS 令牌必须具有“读取”、“列表”和“权限”权限。
- AWS STS 令牌,用于从 AWS S3 读取数据。 你的令牌应具有“s3:GetObject*”、“s3:ListBucket”和“s3:GetBucketLocation”权限。
警告
为了避免滥用或泄露临时凭据,Databricks 建议设置足够长的时间范围来完成任务。
COPY INTO
支持从 AWS S3 加载加密数据。 若要加载加密数据,请提供加密类型和数据解密密钥。
使用临时凭据加载数据
以下示例从 S3 和 ADLS Gen2 加载数据,并使用临时凭据提供对源数据的访问权限。
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
加载加密数据
使用客户提供的加密密钥,以下示例从 S3 加载数据。
COPY INTO my_json_data
FROM 's3://my-bucket/jsonData' WITH (
ENCRYPTION (TYPE = 'AWS_SSE_C', MASTER_KEY = '...')
)
FILEFORMAT = JSON
使用源和目标凭据加载 JSON 数据
以下示例将来自 Azure 上的文件中的 JSON 数据加载到名为 my_json_data
的外部 Delta 表中。
必须在执行 COPY INTO
之前创建此表。
该命令使用一个现有凭据写入外部 Delta 表,并使用另一个凭据从 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')