Carregar uso de dados COPY INTO com volumes Unity Catalog ou locais externos
Este artigo descreve como usar o comando COPY INTO para carregar dados de um bucket Amazon S3 (S3) em seu AWS account em uma tabela em Databricks SQL.
As etapas deste artigo pressupõem que o administrador tenha configurado um volume Unity Catalog ou um local externo para que o senhor possa acessar os arquivos de origem em S3. Se o administrador configurou um recurso compute para usar um AWS instance profile, consulte Carregar uso de dados COPY INTO com um instance profile ou tutorial: COPY INTO com Spark SQL em vez disso. Se o administrador lhe forneceu credenciais temporárias (um ID de acesso AWS key , uma chave secreta e tokens de sessão), consulte Carregar uso de dados COPY INTO com credenciais temporárias.
A Databricks recomenda o uso de volumes para acessar arquivos no armazenamento em nuvem como parte do processo de ingestão usando COPY INTO. Para obter mais informações sobre as recomendações de uso de volumes e locais externos, consulte Unity Catalog best practices.
Antes de começar
Antes de usar o site COPY INTO para carregar dados de um volume do Unity Catalog ou de um caminho de armazenamento de objetos na nuvem definido como um local externo do Unity Catalog, o senhor deve ter o seguinte:
-
O privilégio
READ VOLUMEem um volume ou o privilégioREAD FILESem um local externo. Para obter mais informações sobre como criar volumes, consulte O que são volumes Unity Catalog ?. Para obter mais informações sobre como criar locais externos, consulte Visão geral de locais externos. -
O caminho para seus dados de origem na forma de um URL de armazenamento de objetos na nuvem ou um caminho de volume.
Exemplo de URL de armazenamento de objetos na nuvem:
s3://landing-bucket/raw-data/json.Exemplo de caminho de volume:
/Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/raw_data/json. -
O privilégio
USE SCHEMAno esquema que contém a tabela de destino. -
O privilégio
USE CATALOGno catálogo principal.
Para obter mais informações sobre os privilégios Unity Catalog , consulte a Referência de privilégiosUnity Catalog.
Carregar dados de um volume
Para carregar dados de um volume do Unity Catalog, o senhor deve ter o privilégio READ VOLUME. Os privilégios de volume se aplicam a todos os diretórios aninhados no volume especificado.
Por exemplo, se o senhor tiver acesso a um volume com o caminho /Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/, os seguintes comandos serão 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;
O prefixo de esquema dbfs: também é suportado com caminhos de volume (por exemplo, dbfs:/Volumes/...), mas a Databricks recomenda o uso do formato de caminho /Volumes/ mostrado acima.
Carregar uso de dados em um local externo
Databricks recomenda o uso de volumes para acessar arquivos no armazenamento cloud . Locais externos são suportados, mas não são a abordagem recomendada. Veja gerenciar e tabelas externas.
O exemplo a seguir carrega dados do S3 em uma tabela usando locais externos do Unity Catalog para fornecer acesso aos dados de origem.
COPY INTO my_json_data
FROM 's3://landing-bucket/json-data'
FILEFORMAT = JSON;
Herança de privilégios de localização externa
Os privilégios de localização externa se aplicam a todos os diretórios aninhados no local especificado.
Por exemplo, se o senhor tiver acesso a um local externo definido com o URL s3://landing-bucket/raw-data, os seguintes comandos serão válidos:
COPY INTO landing_table
FROM 's3://landing-bucket/raw-data'
FILEFORMAT = PARQUET;
COPY INTO json_table
FROM 's3://landing-bucket/raw-data/json'
FILEFORMAT = JSON;
As permissões para este local externo não concedem quaisquer privilégios em diretórios acima ou paralelos ao local especificado. Por exemplo, nenhum dos seguintes comandos é válido:
COPY INTO parent_table
FROM 's3://landing-bucket'
FILEFORMAT = PARQUET;
COPY INTO sibling_table
FROM 's3://landing-bucket/json-data'
FILEFORMAT = JSON;
Namespace de três níveis para tabelas de destino
Você pode direcionar uma tabela Unity Catalog usando um namespace de três níveis (<catalog_name>.<schema_name>.<table_name>). Use os comandos USE CATALOG <catalog_name> e USE SCHEMA <schema_name> para definir o catálogo e o esquema default para sua consulta ou Notebook atual.
O exemplo a seguir carrega dados de um volume para uma tabela usando o namespace de três níveis:
COPY INTO quickstart_catalog.quickstart_schema.landing_table
FROM '/Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/raw_data'
FILEFORMAT = PARQUET;
Você também pode definir o catálogo e o esquema default primeiro:
USE CATALOG quickstart_catalog;
USE SCHEMA quickstart_schema;
COPY INTO landing_table
FROM '/Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/raw_data'
FILEFORMAT = PARQUET;