Carregar uso de dados COPY INTO com volumes Unity Catalog ou locais externos
Aprenda a usar COPY INTO
para ingerir dados para Unity Catalog gerenciado ou tabelas externas de qualquer fonte e formato de arquivo suportado por COPY INTO. O Unity Catalog adiciona novas opções para configurar o acesso seguro aos dados brutos. Você pode usar volumes do Unity Catalog ou locais externos para acessar dados no armazenamento de objetos cloud .
Databricks recomenda o uso de volumes para acessar arquivos no armazenamento em cloud como parte do processo de ingestão usando COPY INTO
. Para obter mais informações sobre recomendações para usar volumes e locais externos, consulte as melhores práticas do Unity Catalog.
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 passos nestes artigos pressupõem que seu administrador configurou um volume de Unity Catalog ou um local externo para que você possa acessar seus arquivos de origem no S3. Se seu administrador configurou um recurso compute para usar um instance profile da AWS, consulte Carregar uso de dados COPY INTO com um instance profile ou Tutorial: COPY INTO com Spark SQL . Se seu administrador forneceu credenciais temporárias (um ID key de acesso da AWS, uma key secreta e tokens de sessão ), consulte Carregar uso de dados COPY INTO com credenciais temporárias .
Antes de começar
Antes de usar COPY INTO
para carregar dados de um volume Unity Catalog ou de um caminho de armazenamento de objeto cloud definido como um local externo Unity Catalog, o senhor deve ter o seguinte:
O privilégio
READ VOLUME
em um volume ou o privilégioREAD FILES
em um local externo.Para obter mais informações sobre a criação de volumes, consulte O que são volumes Unity Catalog?
Para obter mais informações sobre a criação de locais externos, consulte Criar um local externo para conectar o armazenamento cloud a Databricks.
O caminho para os dados de origem na forma de um URL de armazenamento de objeto cloud ou um caminho de volume.
Exemplo cloud URL de armazenamento de objetos:
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 SCHEMA
no esquema que contém a tabela de destino.O privilégio
USE CATALOG
no catálogo principal.
Para obter mais informações sobre os privilégios do site Unity Catalog, consulte Unity Catalog privileges and securable objects.
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/
, o comando a seguir será válido:
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;
Opcionalmente, você também pode usar um caminho de volume com o esquema dbfs. Por exemplo, os seguintes comandos também são válidos:
COPY INTO landing_table
FROM 'dbfs:/Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/raw_data'
FILEFORMAT = PARQUET;
COPY INTO json_table
FROM 'dbfs:/Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/raw_data/json'
FILEFORMAT = JSON;
Carregar uso de dados em um local externo
O exemplo a seguir carrega dados do S3 em uma tabela usando locais externos do Unity Catalog para fornecer acesso ao código-fonte.
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 nesse local externo não concedem nenhum privilégio em diretórios acima ou paralelos ao local especificado. Por exemplo, nenhum dos comandos a seguir é 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
O senhor pode direcionar uma tabela do Unity Catalog usando um identificador de três níveis (<catalog_name>.<database_name>.<table_name>
). O senhor pode usar os comandos USE CATALOG <catalog_name>
e USE <database_name>
para definir o catálogo e o banco de dados do default para a consulta ou o Notebook atual.