Compartilhar via


Leitura do compartilhamento de dados usando o Delta Sharing do Databricks para Databricks (para destinatários)

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

O compartilhamento Databricks para Databricks requer que você, como destinatário, atenda ambos os seguintes requisitos:

  • Você tem acesso a um workspace do Databricks que está habilitado para o Catálogo do Unity.
  • O provedor está usando o protocolo Databricks-to-Databricks Delta Sharing, não o protocolo de compartilhamento aberto, que fornece um arquivo de credencial.

Se qualquer um dos requisitos não for atendido, consulte Ler dados compartilhados usando o Compartilhamento Delta aberto com tokens de portador (para destinatários).

Como faço para disponibilizar dados compartilhados para minha equipe?

Para ler dados e notebooks que foram compartilhados com você usando o protocolo Databricks para Databricks, você deve ser um usuário em um workspace do Databricks habilitado para o Catálogo do Unity. Um membro de sua equipe fornece ao provedor de dados um identificador exclusivo para o metastore do Catálogo do Unity e o provedor de dados usa esse identificador para criar uma conexão de compartilhamento segura com sua organização. Os dados compartilhados ficam disponíveis para acesso de leitura no seu workspace. As atualizações que o provedor de dados faz para as tabelas compartilhadas, exibições, volumes e partições são refletidas em seu workspace quase em tempo real.

Observação

As alterações de coluna, como adicionar, renomear ou excluir, podem não aparecer no Gerenciador de Catálogos por até um minuto. Da mesma forma, novos compartilhamentos e atualizações para compartilhamentos, incluindo a adição de novas tabelas, são armazenados em cache por um minuto antes de estarem disponíveis para exibição e consulta.

Para ler os dados que foram compartilhados com você:

  1. Um usuário em sua equipe encontra o compartilhamento – o contêiner para as tabelas, exibições, volumes e notebooks 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 Unity do Databricks.
  2. Um usuário em sua equipe concede ou nega acesso ao catálogo e aos objetos dentro do catálogo (esquemas, tabelas, exibições e volumes) aos membros da sua equipe.
  3. Você lê os dados nas tabelas, exibições e volumes aos quais você recebeu acesso como qualquer ativo de dados no Databricks ao qual você tem acesso somente leitura (SELECT ou READ VOLUME).
  4. Você pode visualizar e clonar blocos de anotações no compartilhamento, desde que tenha o privilégio USE CATALOG no catálogo.

Permissões necessárias

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

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

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

Exibir 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 os objetos de compartilhamento armazenados no metastore do seu Catálogo do Unity depois que o provedor tiver compartilhado dados com você.

O objeto do provedor representa o metastore do Catálogo do Unity, a plataforma de nuvem e a região da organização que compartilhou os dados com você.

O objeto de compartilhamento representa as tabelas, volumes e exibições que o provedor compartilhou com você.

Exibir todos os provedores que compartilharam dados com você

Para exibir uma lista de provedores de dados disponíveis, use o Explorador do Catálogo, a CLI do Catálogo do Unity do Databricks ou o comando SQL SHOW PROVIDERS em um notebook do Azure Databricks ou o editor de consulta SQL do Databricks.

Permissões necessárias: você precisa ser um administrador do 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, confira Ver provedores.

Ver detalhes do provedor

Para exibir detalhes sobre um provedor, use o Explorador de Catálogos, a CLI do Catálogo do Unity do Databricks ou o comando SQL DESCRIBE PROVIDER em um notebook do Azure Databricks ou o editor de consulta do Databricks SQL.

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

Para obter detalhes, confira Ver detalhes do provedor.

Ver compartilhamentos

Para exibir os compartilhamentos que um provedor compartilhou com você, use o Explorador do Catálogo, a CLI do Catálogo do Unity do Databricks ou o comando SQL SHOW SHARES IN PROVIDER em um notebook do Azure Databricks ou o editor de consulta do Databricks SQL.

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

Para obter detalhes, confira Ver 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 com privilégios precisa criar um catálogo com base no 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 o metastore do Catálogo do Unity 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 precisa conceder a você acesso à tabela ou volume compartilhado.
  3. Você pode acessar a tabela ou volume da mesma forma que faria com qualquer outro ativo de dados registrado no metastore do Catálogo do Unity.

Criar um catálogo com base em um compartilhamento

Para tornar os dados de um compartilhamento acessíveis à sua equipe, você precisa criar um catálogo a partir do compartilhamento. Para criar um catálogo a partir de um compartilhamento, use o Explorador do Catálogo, a CLI do Catálogo do Unity do Databricks ou os comandos SQL em um notebooks do Azure Databricks ou o editor de consulta do Databricks SQL.

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

Observação

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

Explorador do Catálogo

  1. No workspace do Azure Databricks, clique no ícone Dados.Catálogo para abrir o Gerenciador de Catálogos.

  2. Na parte superior do painel Catálogo, clique no ícone de engrenagem e selecione Compartilhamento Delta.

    Como alternativa, na página Acesso rápido, clique no botão Delta Sharing >.

  3. Na guia Compartilhado comigo, localize e selecione o provedor.

  4. Na guia 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.

Como alternativa, ao abrir o Catalog Explorer, você pode clicar em Criar Catálogo no canto superior direito para criar um catálogo compartilhado. Confira Criar catálogos.

SQL

Execute o comando a seguir em um notebook ou no editor de SQL do Databricks.

CREATE CATALOG [IF NOT EXISTS] <catalog-name>
USING SHARE <provider-name>.<share-name>;

CLI

databricks catalogs create <catalog-name> /
--provider-name <provider-name> /
--share-name <share-name>

O catálogo criado com base em um compartilhamento tem um tipo de catálogo do Delta Sharing. Você pode exibir o tipo na página de detalhes do catálogo no Gerenciador de Catálogos ou executando o comando SQL DESCRIBE CATALOG em um notebook ou consulta SQL do Databricks. Todos os catálogos compartilhados estão listados em Catálogo > Compartilhado no painel esquerdo do Gerenciador de Catálogos.

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

A estrutura de namespace de 3 níveis em um catálogo do Delta Sharing criado com base em um compartilhamento é a mesma de um catálogo regular no Catálogo do Unity: catalog.schema.table ou catalog.schema.volume.

Os dados de tabela ou volume em um catálogo compartilhado são somente leitura, o que significa que você pode executar 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.

Os notebooks em um catálogo compartilhado podem ser visualizados e clonados por qualquer usuário com USE CATALOG ao catálogo.

Os modelos em um catálogo compartilhado podem ser lidos e carregados para inferência por qualquer usuário com os seguintes privilégios: privilégio EXECUTE no modelo registrado, além de privilégios USE SCHEMA e USE CATALOG no esquema e catálogo que contém o modelo.

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

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

Os privilégios são herdados de cima para baixo, embora alguns workspaces ainda possam estar no modelo de segurança herdado que não tenha fornecido a herança. Confira 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 no 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 no catálogo, a menos que esse privilégio seja revogado. Você não pode conceder privilégios que dão acesso de gravação ou atualização a um catálogo ou objetos do Delta Sharing em um catálogo do 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 de objetos e os ciclos de vida.

Para obter informações detalhadas sobre como gerenciar privilégios em objetos de dados usando o Catálogo do Unity, confira Gerenciar privilégios no Catálogo do Unity.

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 Azure Databricks: Explorador do Catálogo, notebooks, consultas SQL, CLI do Databricks e APIs REST do Databricks. Você precisa 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 Azure Databricks: Explorador do Catálogo, notebooks, consultas SQL, CLI do Databricks e APIs REST do Databricks. Você precisa ter o privilégio READ VOLUME no volume.

Carregar um modelo compartilhado para inferência

Para obter detalhes sobre como carregar um modelo compartilhado e usá-lo para inferência em lotes, consulte Carregar versão de modelo por alias para cargas de trabalho de inferência.

Consultar os dados de histórico de uma tabela

Se o histórico for compartilhado junto com a tabela, consulte os dados da tabela a partir de uma versão ou carimbo de data/hora. Requer o Databricks Runtime 12.2 LTS ou superior.

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 de alteração (CDF) estiver habilitado com a tabela, consulte o CDF. Há suporte para a versão e o carimbo de data/hora:

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ções, confira Usar o feed de dados de alterações do Delta Lake no Azure Databricks.

Consultar uma tabela usando o Streaming Estruturado do Apache Spark

Se uma tabela for compartilhada com o histórico, você poderá usá-la como fonte do Streaming Estruturado do Spark. Requer o Databricks Runtime 12.2 LTS ou superior.

Opções com suporte:

  • ignoreDeletes: ignorar transações que excluem dados.
  • ignoreChanges: reprocessar as atualizações se os arquivos foram reescritos na tabela de origem devido a uma operação de alteração de dados, como UPDATE, MERGE INTO, DELETE (dentro de 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 por downstream. ignoreChanges incorpora ignoreDeletes. Portanto, se você usar ignoreChanges, seu stream não será interrompido por exclusões ou atualizações na tabela de origem.
  • startingVersion: a versão da tabela compartilhada de início. Todas as alterações de tabela que começam a partir dessa versão (inclusive) serão lidas pela fonte de streaming.
  • startingTimestamp: o carimbo de data/hora do qual começar. Todas as alterações de tabela confirmadas no registro de data/hora (inclusive) serão lidas pela fonte de streaming. Exemplo: "2023-01-01 00:00:00.0"
  • maxFilesPerTrigger: o número de novos arquivos a serem considerados em cada microlote.
  • maxBytesPerTrigger: a quantidade de dados que é processada em cada microlote. Essa opção define um “máximo flexível”, o que significa que um lote processa aproximadamente essa quantidade de dados e pode processar mais do que o limite para fazer a consulta de streaming avançar nos casos em que a menor unidade de entrada for maior que esse limite.
  • readChangeFeed: o stream lê o feed de dados de alterações da tabela compartilhada.

Opções sem suporte:

  • Trigger.availableNow

Exemplos de consultas de Streaming Estruturado

Scala (linguagem de programação)
spark.readStream.format("deltaSharing")
.option("startingVersion", 0)
.option("ignoreChanges", true)
.option("maxFilesPerTrigger", 10)
.table("vaccine.vaccine_us.vaccine_us_distribution")
Python
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 habilitado com a tabela, você poderá transmitir a leitura do CDF.

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

Ler as tabelas com vetores de exclusão ou mapeamento de colunas ativados

Importante

Esse recurso está em uma versão prévia.

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

O Azure Databricks também fornece suporte ao mapeamento de colunas para as tabelas Delta. Confira Renomear e remover colunas usando o mapeamento de colunas do Delta Lake.

Se o provedor compartilhou uma tabela com vetores de exclusão ou mapeamento de coluna habilitado, você pode executar leituras em lote na tabela usando um SQL warehouse ou um cluster executando o Databricks Runtime 14.1 ou superior. As consultas de streaming e CDF exigem o Databricks Runtime 14.2 ou superior.

Você pode executar consultas em lote como estão, pois elas podem resolver responseFormat automaticamente com base nos recursos de tabela da tabela compartilhada.

Para ler um CDF (feed de dados de alteração) ou executar consultas de streaming em tabelas compartilhadas com vetores de exclusão ou mapeamento de colunas habilitado, você deve definir a opção adicional responseFormat=delta.

Os seguintes exemplos mostram consultas em lote, de streaming e CDF:

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 tabelas gerenciadas de Iceberg compartilhadas

Importante

Esse recurso está em uma versão prévia.

Ler tabelas de Iceberg gerenciadas compartilhadas é a mesma que ler tabelas compartilhadas, com estas exceções:

Suporte no compartilhamento aberto:

As instruções nesse artigo se concentram na leitura de dados compartilhados usando interfaces de usuário do Azure Databricks, especificamente sintaxe e interfaces do Catálogo do Unity. Devido à limitação do suporte avançado de recursos Delta para conectores de compartilhamento Delta, não há suporte para consultar tabelas de Iceberg gerenciadas compartilhadas usando Python, Tableau e Power BI.

Alterar feed de dados:

O fluxo de dados de alteração não é suportado para tabelas de Iceberg gerenciadas.

Limitações do Azure Databricks Iceberg:

As limitações da tabela Iceberg e da tabela Iceberg gerenciada se aplicam. Veja as limitações da tabela Iceberg.

Ler exibições compartilhadas

Ler exibições compartilhadas é o mesmo que ler tabelas compartilhadas, com essas exceções:

Exibir restrições de compartilhamento:

  • Não é possível compartilhar exibições que façam referência a tabelas ou exibições compartilhadas.
  • As exibições compartilhadas dão suporte apenas a um subconjunto de funções internas e operadores no Databricks. Consulte Funções com suporte em exibições compartilhadas de Databricks para Databricks.
  • Os destinatários não podem consultar mais de 20 exibições compartilhadas em uma consulta no compartilhamento Databricks-to-Databricks. As exibições compartilhadas não podem ser de mais de cinco provedores-compartilhamentos diferentes.

Requisitos de nomenclatura:

O nome do catálogo que você usa para o catálogo compartilhado que contém a exibição não pode ser o mesmo que qualquer catálogo de provedores que contenha uma tabela referenciada pelo modo de exibição. Por exemplo, se a exibição compartilhada estiver contida em seu test catálogo e uma das tabelas do provedor referenciadas nesse modo de exibição estiver contida no catálogo do test provedor, a consulta resultará em um erro de conflito de namespace. Consulte Criar um catálogo com base em um compartilhamento.

Histórico e streaming:

Você não pode consultar o histórico ou usar um modo de exibição como fonte de streaming.

Exibir o suporte no compartilhamento aberto:

As instruções nesse artigo se concentram na leitura de dados compartilhados usando interfaces de usuário do Azure Databricks, especificamente sintaxe e interfaces do Catálogo do Unity. Você também pode consultar exibições compartilhadas usando ferramentas apache Spark, Python e BI, como Tableau e Power BI.

Custos:

Para obter informações sobre como os custos de compartilhamento são computados, confira Como fazer para incorrer e verificar os custos de compartilhamento Delta?.

Ler tabelas de streaming compartilhadas e exibições materializadas

Importante

Esse recurso está em uma versão prévia.

Ler tabelas de streaming compartilhadas e exibições materializadas é o mesmo que ler tabelas compartilhadas, com estas exceções:

Suporte no compartilhamento aberto:

As instruções nesse artigo se concentram na leitura de dados compartilhados usando interfaces de usuário do Azure Databricks, especificamente sintaxe e interfaces do Catálogo do Unity. Você também pode consultar tabelas de streaming compartilhadas e exibições materializadas usando ferramentas apache Spark, Python e BI, como Tableau e Power BI.

Limitações do SQL:

  • Não há suporte para a função current_recipient.
  • Não há suporte para o comando DESCRIBE EXTENDED.
  • Você não pode ingressar ou unir uma tabela de streaming ou uma exibição materializada do seu espaço de trabalho com uma tabela de streaming compartilhada ou uma exibição materializada.

Custos:

Para obter informações sobre como os custos de compartilhamento são computados, confira Como fazer para incorrer e verificar os custos de compartilhamento Delta?.

Exceções específicas da visão materializada

História:

Não é possível consultar o histórico.

Atualizar:

Não é possível acessar o status de atualização e o cronograma de atualização da exibição materializada.

Exibir e transmitir a criação da tabela:

Não é possível criar exibições ou tabelas de streaming em exibições materializadas compartilhadas.

Exceções específicas da tabela de streaming

História:

O histórico de consulta está disponível nas seguintes circunstâncias de compartilhamento do Databricks para Databricks:

  • Você está usando a computação sem servidor ao compartilhar com uma conta diferente do Azure Databricks.

  • Você está usando computação clássica ou sem servidor ao compartilhar dentro da mesma conta do Azure Databricks.

Para obter mais informações sobre cálculos diferentes, consulte Tipos de computação.

Atualizar:

Você não pode acessar o status de atualização e o agendamento de atualização da tabela de streaming.

Criação de exibição:

Não é possível criar exibições em tabelas de streaming compartilhadas.

Ler notebooks compartilhados

Para visualizar e clonar arquivos de notebooks compartilhados, use o Explorador do Catálogo.

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

  1. No workspace do Azure Databricks, clique no ícone Dados.Catálogo.

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

  3. Na guia Outros ativos , você verá todos os arquivos de bloco de anotações compartilhados.

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

  5. (Opcional) Clique no botão Clonar para importar o arquivo de notebook compartilhado para seu workspace.

    1. Na caixa de diálogo Clonar para, insira opcionalmente um Novo nome e selecione a pasta do workspace para a qual deseja clonar o arquivo do notebook.
    2. Clique em Clonar.
    3. Depois que o notebooks for clonado, uma caixa de diálogo será exibida para informar que ele foi clonado com sucesso. Clique em revelar no editor do notebook na caixa de diálogo para visualizá-lo no editor do notebooks.

    Consulte os notebooks do Databricks.