Carregue dados usando COPY INTO com volumes do Catálogo Unity ou locais externos
Saiba como usar COPY INTO
para ingerir dados para tabelas gerenciadas ou externas do Unity Catalog a partir de qualquer fonte e formato de arquivo suportado pelo COPY INTO. O Unity Catalog adiciona novas opções para configurar o acesso seguro a dados brutos. Você pode usar volumes do Catálogo Unity ou locais externos para acessar dados no armazenamento de objetos na nuvem.
O Databricks recomenda o uso de volumes para acessar arquivos no armazenamento em nuvem como parte do processo de ingestão usando COPY INTO
o . Para obter mais informações sobre recomendações para o uso de volumes e locais externos, consulte Práticas recomendadas do Unity Catalog.
Este artigo descreve como usar o COPY INTO
comando para carregar dados de um contêiner do Azure Data Lake Storage Gen2 (ADLS Gen2) em sua conta do Azure em uma tabela no Databricks SQL.
As etapas neste artigo pressupõem que seu administrador configurou um volume do Catálogo Unity ou um local externo para que você possa acessar seus arquivos de origem no ADLS Gen2. Se o administrador configurou um recurso de computação para usar uma entidade de serviço, consulte Carregar dados usando COPY INTO com uma entidade de serviço ou Tutorial: COPY INTO com o Spark SQL . Se o administrador lhe tiver fornecido credenciais temporárias (um token SAS de Blob), siga os passos indicados em Carregar dados utilizando COPY INTO com credenciais temporárias.
Antes de começar
Antes de usar COPY INTO
para carregar dados de um volume do Catálogo Unity ou de um caminho de armazenamento de objetos na nuvem definido como um local externo do Catálogo Unity, você deve ter o seguinte:
O
READ VOLUME
privilégio em um volume ou oREAD FILES
privilégio em um local externo.Para obter mais informações sobre como criar volumes, consulte O que são volumes do Catálogo Unity?.
Para obter mais informações sobre como criar locais externos, consulte Criar um local externo para conectar o armazenamento em nuvem ao Azure Databricks.
O caminho para os 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:
abfss://container@storageAccount.dfs.core.windows.net/raw-data/json
.Exemplo de caminho do volume:
/Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/raw_data/json
.O
USE SCHEMA
privilégio no esquema que contém a tabela de destino.O
USE CATALOG
privilégio no catálogo pai.
Para obter mais informações sobre privilégios do Catálogo Unity, consulte Privilégios do Catálogo Unity e objetos protegíveis.
Carregar dados de um volume
Para carregar dados de um volume do Catálogo Unity, você deve ter o READ VOLUME
privilégio. Os privilégios de volume aplicam-se a todos os diretórios aninhados no volume especificado.
Por exemplo, se você 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;
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 dados usando um local externo
O exemplo a seguir carrega dados do ADLS Gen2 em uma tabela usando locais externos do Unity Catalog para fornecer acesso ao código-fonte.
COPY INTO my_json_data
FROM 'abfss://container@storageAccount.dfs.core.windows.net/jsonData'
FILEFORMAT = JSON;
Herança de privilégios de localização externa
Os privilégios de local externo aplicam-se a todos os diretórios aninhados no local especificado.
Por exemplo, se você tiver acesso a um local externo definido com a URL abfss://container@storageAccount.dfs.core.windows.net/raw-data
, os seguintes comandos serão válidos:
COPY INTO landing_table
FROM 'abfss://container@storageAccount.dfs.core.windows.net/raw-data'
FILEFORMAT = PARQUET;
COPY INTO json_table
FROM 'abfss://container@storageAccount.dfs.core.windows.net/raw-data/json'
FILEFORMAT = JSON;
As permissões neste 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 do Catálogo Unity usando um identificador de três camadas (<catalog_name>.<database_name>.<table_name>
). Você pode usar os USE CATALOG <catalog_name>
comandos e USE <database_name>
para definir o catálogo e o banco de dados padrão para sua consulta ou bloco de anotações atual.