Carregar dados usando COPY INTO com credenciais temporárias
Se o cluster do Azure Databricks ou o SQL Warehouse não tiver permissões para ler seus arquivos de origem, você poderá usar credenciais temporárias para acessar dados do armazenamento de objetos de nuvem externo e carregar arquivos em uma tabela do Delta Lake.
Dependendo de como sua organização gerencia a segurança na nuvem, talvez seja necessário solicitar a um administrador de nuvem ou usuário avançado para fornecer credenciais. Para obter mais informações, consulte Gerar credenciais temporárias para ingestão.
Especificação de credenciais temporárias ou opções de criptografia para acessar dados
Observação
As opções de credencial e criptografia estão disponíveis no Databricks Runtime 10.4 LTS e superior.
O COPY INTO
oferece suporte a:
- Tokens SAS do Azure para ler dados do ADLS Gen2 e Armazenamento de Blobs do Azure. Os tokens temporários do Armazenamento de Blobs do Azure estão no nível do contêiner, enquanto os tokens do ADLS Gen2 podem estar no nível do diretório, além do nível do contêiner. O Databricks recomenda usar tokens SAS de nível de diretório quando possível. O token SAS deve ter as permissões de "Leitura", "Lista" e "Permissões".
- Tokens STS do AWS para ler dados do AWS S3. Os tokens devem ter as permissões "S3:GetObject*", "S3:ListBucket" e"S3:GetBucketLocation".
Aviso
Para evitar o uso indevido ou a exposição de credenciais temporárias, o Databricks recomenda que você defina horizontes de expiração que são apenas longos o suficiente para concluir a tarefa.
COPY INTO
dá suporte ao carregamento de dados criptografados do AWS S3. Para carregar dados criptografados, forneça o tipo de criptografia e a chave para descriptografar os dados.
Carregar dados usando credenciais temporárias
O exemplo a seguir carrega dados do S3 e do ADLS Gen2 e usando credenciais temporárias para fornecer acesso aos dados de origem.
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
Carregar dados criptografados
Usando chaves de criptografia fornecidas pelo cliente, o exemplo a seguir carrega dados do S3.
COPY INTO my_json_data
FROM 's3://my-bucket/jsonData' WITH (
ENCRYPTION (TYPE = 'AWS_SSE_C', MASTER_KEY = '...')
)
FILEFORMAT = JSON
Carregar dados JSON usando credenciais para origem e destino
O exemplo a seguir carrega dados JSON de um arquivo no Azure na tabela Delta externa chamada my_json_data
.
Esta tabela deve ser criada antes de COPY INTO
poder ser executada.
O comando usa uma credencial existente para gravar na tabela Delta externa e outra para ler o local do 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')