Ler dados compartilhados usando Databricks-to-Databricks Delta compartilhamento (para destinatários)

Este artigo descreve como ler dados que foram compartilhados com você usando o protocolo Databricks-to-Databricks Delta Sharing, no qual Databricks gerencia uma conexão segura para compartilhamento de dados. Ao contrário do protocolo de compartilhamento aberto Delta Sharing, o protocolo Databricks-to-Databricks não requer um arquivo de credencial (segurança baseada em tokens ).

O compartilhamento de Databricks para Databricks exige que você, como destinatário, tenha acesso a um workspace do Databricks habilitado para Unity Catalog.

Se você não tiver um workspace do Databricks habilitado para Unity Catalog, os dados deverão ser compartilhados com você usando o protocolo de compartilhamento aberto Delta Sharing, e estes artigos não se aplicam a você. Consulte Ler dados compartilhados usando o compartilhamento aberto Delta Sharing (para destinatários).

Como disponibilizo dados compartilhados para minha equipe?

Para ler dados e o Notebook que foram compartilhados com o senhor usando o protocolo Databricks-toDatabricks, o senhor deve ser um usuário em um Databricks workspace que esteja habilitado para Unity Catalog. Um membro da sua equipe fornece ao provedor de dados um identificador exclusivo para o metastore do Unity Catalog, e o provedor de dados usa esse identificador para criar uma conexão de compartilhamento seguro com a sua organização. Os dados compartilhados tornam-se então disponíveis para acesso de leitura em seu workspace, e todas as atualizações que o provedor de dados fizer nas tabelas, visualizações, volumes e partições compartilhados são refletidas em seu workspace em tempo quase real.

Observação

As atualizações em tabelas de dados compartilhados, view e volumes aparecem em seu workspace quase em tempo real. No entanto, as alterações de coluna (adicionar, renomear, excluir) podem não aparecer no Catalog Explorer por até um minuto. Da mesma forma, novos compartilhamentos e atualizações de compartilhamentos (como adicionar novas tabelas a um compartilhamento) são armazenados em cache por um minuto antes de ficarem disponíveis para view e consulta.

Para ler os dados que foram compartilhados com você:

  1. Um usuário da sua equipe encontra o compartilhamento— o contêiner para as tabelas, view, volumes e Notebook que foram compartilhados com você — e usa esse compartilhamento para criar um catálogo— o contêiner de nível superior para todos os dados no Catálogo do Databricks Unity.

  2. Um usuário da sua equipe concede ou nega acesso ao catálogo e aos objetos dentro do catálogo (esquemas, tabelas, view e volumes) a outros membros da sua equipe.

  3. Você lê os dados nas tabelas, view e volumes aos quais recebeu acesso, assim como qualquer outro ativo de dados no Databricks ao qual você tem acesso somente leitura (SELECT ou READ VOLUME).

  4. Você visualiza e clona Notebook no compartilhamento, desde que tenha o privilégio USE CATALOG no catálogo.

Permissões necessárias

Para poder listar e view detalhes sobre todos os provedores e compartilhamentos de provedores, você deve ser um administrador de metastore ou ter o privilégio USE PROVIDER. Outros usuários têm acesso apenas aos provedores e compartilhamentos de sua propriedade.

Para criar um catálogo a partir de um compartilhamento de provedor, você deve ser um administrador metastore, um usuário que tenha os privilégios CREATE_CATALOG e USE PROVIDER para seu metastore Unity Catalog ou um usuário que tenha o privilégio CREATE_CATALOG e a propriedade de o objeto provedor.

A capacidade de conceder acesso somente leitura aos esquemas (bancos de dados), tabelas, view e volumes no catálogo criado a partir do compartilhamento segue a hierarquia de privilégios típica Unity Catalog . A capacidade de view Notebook no catálogo criado a partir do compartilhamento requer o privilégio USE CATALOG no catálogo. Consulte gerenciar permissões para esquemas, tabelas e volumes em um catálogo Delta Sharing .

Ver provedores e compartilhamentos

Para começar a ler os dados que foram compartilhados com você por um provedor de dados, você precisa saber o nome do provedor e compartilhar objetos que estão armazenados em seu metastore Unity Catalog depois que o provedor tiver compartilhado dados com você.

O objeto provedor representa o metastore do Unity Catalog, a plataforma cloud e a região da organização que compartilhou os dados com você.

O objeto de compartilhamento representa as tabelas, os volumes e view que o provedor compartilhou com você.

Veja todos os provedores que compartilharam dados com você

Para view uma lista de provedores de dados disponíveis, você pode usar o Catalog Explorer, a CLI Unity Catalog ou o comando SQL SHOW PROVIDERS em um Notebook do Databricks ou no editor query Databricks SQL .

Permissões necessárias: você deve ser um administrador metastore ou ter o privilégio USE PROVIDER . Outros usuários têm acesso apenas aos provedores e compartilhamentos de provedores de sua propriedade.

Para obter detalhes, consulte Exibir provedores.

Ver detalhes do provedor

Para view detalhes sobre um provedor, você pode usar o Catalog Explorer, a CLI Unity Catalog ou o comando SQL DESCRIBE PROVIDER em um Notebook do Databricks ou no editor query Databricks SQL .

Permissões necessárias: você deve ser um administrador metastore, ter o privilégio USE PROVIDER ou possuir o objeto provedor.

Para obter detalhes, consulte Exibir detalhes do provedor.

Ver compartilhamentos

Para view os compartilhamentos que um provedor compartilhou com você, você pode usar o Catalog Explorer, a CLI Unity Catalog ou o comando SQL SHOW SHARES IN PROVIDER em um Notebook do Databricks ou no editor query Databricks SQL .

Permissões necessárias: você deve ser um administrador metastore, ter o privilégio USE PROVIDER ou possuir o objeto provedor.

Para obter detalhes, consulte Exibir compartilhamentos que um provedor compartilhou com você.

Acessar dados em uma tabela ou volume compartilhado

Para ler dados em uma tabela ou volume compartilhado:

  1. Um usuário privilegiado deve criar um catálogo do compartilhamento que contém a tabela ou volume. Pode ser um administrador do metastore, um usuário que tenha os privilégios CREATE_CATALOG e USE PROVIDER para seu metastore Unity Catalog ou um usuário que tenha o privilégio CREATE_CATALOG e a propriedade do objeto provedor.

  2. Esse usuário ou um usuário com os mesmos privilégios deve conceder acesso à tabela ou volume compartilhado.

  3. Você pode acessar a tabela ou o volume da mesma forma que faria com qualquer outro ativo de dados registrado no metastore do Unity Catalog.

Criar um catálogo a partir de um compartilhamento

Para tornar os dados de um compartilhamento acessíveis à sua equipe, você deve criar um catálogo a partir do compartilhamento. Para criar um catálogo a partir de um compartilhamento, você pode usar o Catalog Explorer, a CLI Unity Catalog ou comandos SQL em um Notebook do Databricks ou no editor query Databricks SQL .

Permissões necessárias: um administrador de metastore, um usuário que tenha os privilégios CREATE_CATALOG e USE PROVIDER para seu metastore Unity Catalog ou um usuário que tenha o privilégio CREATE_CATALOG e a propriedade do objeto provedor.

Observação

Se o compartilhamento incluir view, você deverá usar um nome de catálogo diferente do nome do catálogo que contém a view no metastore do provedor.

  1. No seu workspace do Databricks, clique em Ícone de catálogo Catálogo.

  2. No painel esquerdo, expanda o menu Delta compartilhamento e selecione Compartilhado comigo.

  3. Na tab Provedores , selecione o provedor.

  4. Na tab Compartilhamentos , localize o compartilhamento e clique em Criar catálogo na linha de compartilhamento.

  5. Insira um nome para o catálogo e um comentário opcional.

  6. Clique em Criar.

execução do seguinte comando em um Notebook ou no editor query Databricks SQL .

CREATE CATALOG [IF NOT EXISTS] <catalog-name>
USING SHARE <provider-name>.<share-name>;
databricks unity-catalog catalogs create --name <catalog-name> /
                                    --provider <provider-name> /
                                    --share <share-name>

O catálogo criado a partir de um compartilhamento possui um tipo de catálogo Delta Sharing. Você pode view o tipo na página de detalhes do catálogo no Catalog Explorer ou executando o comando SQL DESCRIBE CATALOG em uma Notebook consulta ou do Databricks SQL Databricks. Todos os catálogos compartilhados estão listados em Catálogo > Compartilhado no painel esquerdo do Catalog Explorer.

Um catálogo de compartilhamento Delta pode ser gerenciado da mesma forma que os catálogos regulares em um metastore do Catálogo Unity. Você pode view, atualizar e excluir um catálogo de compartilhamento Delta usando o Catalog Explorer, a CLI do Databricks e usando comandos SQL SHOW CATALOGS, DESCRIBE CATALOG, ALTER CATALOG e DROP CATALOG.

A estrutura de namespace de três níveis em um catálogo Delta Sharing criado a partir de um compartilhamento é a mesma de um catálogo normal no Unity Catalog: catalog.schema.table ou catalog.schema.volume.

Os dados de tabelas e volumes em um catálogo compartilhado são somente leitura, o que significa que você pode realizar operações de leitura como:

  • DESCRIBE, SHOW e SELECT para tabelas.

  • DESCRIBE VOLUME, LIST <volume-path>, SELECT * FROM <format>.'<volume_path>' e COPY INTO para volumes.

Notebook em um catálogo compartilhado pode ser visualizado e clonado por qualquer usuário com USE CATALOG no catálogo.

Gerenciar permissões para esquemas, tabelas e volumes em um catálogo Delta Sharing

Por default, o criador do catálogo é o proprietário de todos os objetos de dados em um catálogo de compartilhamento Delta e pode gerenciar permissões para qualquer um deles.

Os privilégios são herdados descendentemente, embora alguns workspace ainda possam estar no modelo de segurança herdado que não fornecia herança. Consulte Modelo de herança. Qualquer usuário com o privilégio SELECT no catálogo terá o privilégio SELECT em todos os esquemas e tabelas do catálogo, a menos que esse privilégio seja revogado. Da mesma forma, qualquer usuário com o privilégio READ VOLUME no catálogo terá o privilégio READ VOLUME em todos os volumes do catálogo, a menos que esse privilégio seja revogado. Você não pode conceder privilégios que concedam acesso de gravação ou atualização a um catálogo Delta Sharing ou a objetos em um catálogo Delta Sharing .

O proprietário do catálogo pode delegar a propriedade de objetos de dados a outros usuários ou grupos, concedendo a esses usuários a capacidade de gerenciar as permissões e os ciclos de vida do objeto.

Para obter informações detalhadas sobre como gerenciar privilégios em objetos de dados usando Unity Catalog, consulte Gerenciar privilégios no Unity Catalog.

Ler dados em uma tabela compartilhada

Você pode ler dados em uma tabela compartilhada usando qualquer uma das ferramentas disponíveis para você como usuário do Databricks: Catalog Explorer, Notebook, query SQL, CLI do Databricks e APIs REST do Databricks. Você deve ter o privilégio SELECT na tabela.

Ler dados em um volume compartilhado

Você pode ler dados em um volume compartilhado usando qualquer uma das ferramentas disponíveis para você como usuário do Databricks: Catalog Explorer, Notebook, consultas SQL, a CLI do Databricks e APIs REST do Databricks. Você deve ter o privilégio READ VOLUME no volume.

Consultar os dados históricos de uma tabela

Se a história for compartilhada junto com a tabela, você pode query os dados da tabela a partir de uma versão ou timestamp. Requer Databricks Runtime 12.1 ouacima.

Por exemplo:

SELECT * FROM vaccine.vaccine_us.vaccine_us_distribution VERSION AS OF 3;
SELECT * FROM vaccine.vaccine_us.vaccine_us_distribution TIMESTAMP AS OF "2023-01-01 00:00:00";

Além disso, se o feed de dados alterados (CDF) estiver ativado com a tabela, você poderá query o CDF. Tanto a versão quanto o timestamp são suportados:

SELECT * FROM table_changes('vaccine.vaccine_us.vaccine_us_distribution', 0, 3);
SELECT * FROM table_changes('vaccine.vaccine_us.vaccine_us_distribution', "2023-01-01 00:00:00", "2022-02-01 00:00:00");

Para obter mais informações sobre o feed de dados de alteração, consulte Usar o feed de dados de alteração do Delta Lake no Databricks.

Consultar uma tabela usando Apache Spark transmitida estruturada

Se uma tabela for compartilhada com a história, você pode usá-la como fonte para a transmissão estruturada do Spark. Requer Databricks Runtime 12.1 ouacima.

Opções suportadas:

  • ignoreDeletes: Ignore as transações que excluem dados.

  • ignoreChanges: reprocesse as atualizações se os arquivos foram reescritos na tabela de origem devido a operações de alteração de dados, como UPDATE, MERGE INTO, DELETE (dentro das partições) ou OVERWRITE. Linhas inalteradas ainda podem ser emitidas. Portanto, seus consumidores downstream devem ser capazes de lidar com duplicatas. As exclusões não são propagadas a jusante. ignoreChanges subsume ignoreDeletes. Portanto, se você usar ignoreChanges, sua transmissão não será interrompida por exclusões ou atualizações na tabela de origem.

  • startingVersion: a versão da tabela compartilhada a partir da qual começar. Todas as alterações de tabela a partir desta versão (inclusive) serão lidas pela fonte da transmissão.

  • startingTimestamp: O carimbo de data/hora a partir do qual começar. Todas as alterações de mesa confirmadas no ou após o carimbo de data/hora (inclusive) serão lidas pela fonte de transmissão. Exemplo: "2023-01-01 00:00:00.0"

  • maxFilesPerTrigger: O número de novos arquivos a serem considerados em todos os micro-lotes.

  • maxBytesPerTrigger: A quantidade de dados que é processada em cada micro-lote. Esta opção define um “soft max”, significando que um lote processa aproximadamente esta quantidade de dados e pode processar mais do que o limite para fazer a query transmitida avançar nos casos em que a menor unidade de entrada for maior que este limite.

  • readChangeFeed: transmissão lê o feed de dados alterados da tabela compartilhada.

Opções não suportadas:

  • Trigger.availableNow

Exemplo queryestruturada transmitida

spark.readStream.format("deltaSharing")
.option("startingVersion", 0)
.option("ignoreChanges", true)
.option("maxFilesPerTrigger", 10)
.table("vaccine.vaccine_us.vaccine_us_distribution")
spark.readStream.format("deltaSharing")\
.option("startingVersion", 0)\
.option("ignoreDeletes", true)\
.option("maxBytesPerTrigger", 10000)\
.table("vaccine.vaccine_us.vaccine_us_distribution")

Se o feed de dados alterados (CDF) estiver ativado com a tabela, você poderá ler o CDF por transmissão.

spark.readStream.format("deltaSharing")
.option("readChangeFeed", "true")
.table("vaccine.vaccine_us.vaccine_us_distribution")

Ler tabelas com vetores de exclusão ativados

Visualização

Este recurso está em visualização pública.

Os vetores de exclusão são um recurso de otimização de armazenamento que seu provedor pode ativar em tabelas Delta compartilhadas. Consulte O que são vetores de exclusão?

Se o provedor compartilhou uma tabela com vetores de exclusão ativados, o senhor pode realizar leituras de lotes na tabela usando um SQL warehouse ou um cluster que esteja executando o Databricks Runtime 14.1 ou acima. As consultas de CDF e transmissão exigem o Databricks Runtime 14.2 ou superior.

O senhor pode realizar muitas consultas como estão, porque elas podem resolver automaticamente responseFormat com base no recurso de tabela da tabela compartilhada.

Para ler um feed de dados de alteração (CDF) ou para realizar consultas de transmissão em tabelas compartilhadas com vetores de exclusão ou mapeamento de coluna ativados, o senhor deve definir a opção adicional responseFormat=delta.

Os exemplos a seguir mostram consultas de lotes, CDF e transmissão:

import org.apache.spark.sql.SparkSession


// Batch query
spark.read.format("deltaSharing").table(<tableName>)

// CDF query
spark.read.format("deltaSharing")
  .option("readChangeFeed", "true")
  .option("responseFormat", "delta")
  .option("startingVersion", 1)
  .table(<tableName>)

// Streaming query
spark.readStream.format("deltaSharing").option("responseFormat", "delta").table(<tableName>)

Ler visualizações compartilhadas

Visualização

Este recurso está em visualização pública.

Observação

o compartilhamento view tem suporte apenas no compartilhamento Databricks-para-Databricks.

A leitura view compartilhada é igual à leitura das tabelas compartilhadas, com as seguintes exceções:

requisitos compute :

  • Se o seu Databricks account for diferente do do provedor, o senhor deverá usar um Serverless SQL warehouse para consultar a visualização compartilhada.

  • Se o provedor estiver na mesma account do Databricks, você poderá usar qualquer SQL warehouse e também poderá usar clusters que usam o modo de acesso compartilhado.

restrições viewnaview :

Você não pode criar view que faça referência a view compartilhada.

view restrições de compartilhamento:

Você não pode compartilhar view que façam referência a tabelas compartilhadas ou view compartilhadas.

Requisitos de nomenclatura:

O nome do catálogo que você usa para o catálogo compartilhado que contém a view não pode ser o mesmo de qualquer catálogo de provedor que contenha uma tabela referenciada pela view. Por exemplo, se a view compartilhada estiver contida em seu catálogo test e uma das tabelas do provedor referenciada nessa view estiver contida no catálogo test do provedor, a query resultará em um erro de conflito de namespace. Consulte Criar um catálogo a partir de um compartilhamento.

história e streaming:

Você não pode query a história ou usar uma view como fonte de transmissão.

JDBC/ODBC:

As instruções nestes artigos concentram-se na leitura de interfaces de usuário de uso de dados compartilhados do Databricks, especificamente na sintaxe e nas interfaces do Unity Catalog. Você também pode consultar view compartilhada usando ferramentas Apache Spark, Python e BI, como Tableau e Power BI, usando drivers JDBC/ODBC do Databricks. Para saber como se conectar usando os drivers JDBC/ODBC do Databricks, consulte Drivers ODBC e JDBC do Databricks.

Ler Notebookcompartilhado

Para visualizar e clonar arquivos compartilhados Notebook , você pode usar o Catalog Explorer.

Permissões necessárias: Proprietário ou usuário do catálogo com o privilégio USE CATALOG no catálogo criado a partir do compartilhamento.

  1. No seu workspace do Databricks, clique em Ícone de catálogo Catálogo.

  2. No painel esquerdo, expanda o menu Catálogo , encontre e selecione o catálogo criado a partir do compartilhamento.

  3. Na tab Outros ativos , você verá todos os arquivos Notebook compartilhados.

  4. Clique no nome de um arquivo Notebook compartilhado para visualizá-lo.

  5. (Opcional) Clique no botão Clonar para importar o arquivo Notebook compartilhado para sua workspace.

    1. Na caixa de diálogo Clonar para , insira opcionalmente um Novo nome e selecione a pasta workspace para a qual deseja clonar o arquivo Notebook .

    2. Clique em Clonar.

    3. Depois que o Notebook for clonado, uma caixa de diálogo será exibida para informar que ele foi clonado com sucesso. Clique em revelar no editor Notebook na caixa de diálogo para view -lo no editor Notebook .

    Consulte Introdução ao NotebookDatabricks.