Partilhar via


Carregar dados usando COPY INTO com credenciais temporárias

Se o seu cluster Azure Databricks ou SQL warehouse não tiver permissões para ler os seus ficheiros de origem, pode usar credenciais temporárias para aceder a dados de armazenamento externo na nuvem e carregar ficheiros numa tabela Delta Lake.

Dependendo de como sua organização gerencia sua segurança na nuvem, talvez seja necessário pedir 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.

Especificando credenciais temporárias ou opções de criptografia para acessar dados

Nota

As opções de credencial e criptografia estão disponíveis no Databricks Runtime 10.4 LTS e superior.

COPY INTO Suporta:

  • Azure tokens SAS para ler dados de ADLS e Armazenamento de Blobs do Azure. Os tokens temporários do Armazenamento de Blobs do Azure estão ao nível do contentor, enquanto os tokens ADLS podem estar ao nível do diretório além do nível do contentor. O Databricks recomenda o uso de tokens SAS no nível de diretório quando possível. O token SAS deve ter permissões de "Leitura" e "Listagem".
  • Tokens do AWS STS para leitura de dados do AWS S3. Os teus 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 sejam longos o suficiente para concluir a tarefa.

COPY INTO oferece suporte ao carregamento de dados criptografados do AWS S3. Para carregar dados encriptados, forneça o tipo de encriptação e a chave para desencriptar os dados.

Carregar dados usando credenciais temporárias

O exemplo a seguir carrega dados do S3 e ADLS 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 seguinte carrega dados JSON de um ficheiro no Azure para a tabela Delta externa chamada my_json_data. Esta tabela deve ser criada antes que COPY INTO possa ser executada. O comando utiliza uma credencial existente para gravar numa tabela Delta externa e outra para ler a partir da localização 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')