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

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

Databricks-to-Databricks O compartilhamento exige que o senhor, como destinatário, tenha acesso a um Databricks workspace que esteja habilitado para Unity Catalog.

Se o senhor não tiver um Databricks workspace que esteja habilitado para Unity Catalog, os dados deverão ser compartilhados com o senhor usando o protocolo de compartilhamento aberto Delta Sharing, e este artigo não se aplica ao senhor. Consulte Ler dados compartilhados usando o compartilhamento aberto do Delta Sharing (para destinatários).

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

Para ler dados e o Notebook que foram compartilhados com o senhor usando o protocolo Databricks-to-Databricks, 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 de tabelas de dados compartilhados, visualizações e volumes aparecem em seu site workspace em tempo quase real. No entanto, as alterações de coluna (adição, renomeação, exclusão) podem não aparecer no Catalog Explorer por até um minuto. Da mesma forma, novos compartilhamentos e atualizações de compartilhamentos (como a adição de novas tabelas a um compartilhamento) são armazenados em cache por um minuto antes de ficarem disponíveis para o senhor acessar view e consultar.

Para ler os dados que foram compartilhados com o senhor:

  1. Um usuário da sua equipe encontra o compartilhamento - ocontêiner das tabelas, exibições, volumes e Notebook que foram compartilhados com o senhor - e usa esse compartilhamento para criar um catálogo - ocontêiner de nível superior para todos os dados em Databricks Unity Catalog.

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

  3. O senhor lê os dados nas tabelas, visualizações e volumes aos quais lhe foi concedido acesso, como qualquer outro dado ativo em Databricks ao qual tenha acesso somente leitura (SELECT ou READ VOLUME).

  4. O senhor visualiza e clona o 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, o senhor deve ser um administrador de metastore ou ter o privilégio USE PROVIDER. Outros usuários têm acesso apenas aos provedores e ações que possuem.

Para criar um catálogo a partir de um compartilhamento de provedor, o senhor deve ser um administrador do metastore, um usuário que tenha os privilégios CREATE_CATALOG e USE PROVIDER para o metastore do Unity Catalog ou um usuário que tenha 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, visualizações e volumes no catálogo criado a partir do compartilhamento segue a hierarquia típica de privilégios do site 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 os esquemas, tabelas e volumes em um catálogo Delta Sharing .

Visualizar provedores e ações

Para começar a ler os dados que foram compartilhados com o senhor por um provedor de dados, é necessário saber o nome do provedor e compartilhar os objetos que estão armazenados no metastore do Unity Catalog depois que o provedor tiver compartilhado os dados com o senhor.

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

O objeto de compartilhamento representa as tabelas, os volumes e a visualização que o provedor compartilhou com o senhor.

Ver todos os provedores que compartilharam dados com o senhor

Para view uma lista de provedores de dados disponíveis, o senhor pode usar o Catalog Explorer, o Databricks Unity Catalog CLI, ou o comando SHOW PROVIDERS SQL em um Databricks Notebook ou o editor de consultas Databricks SQL.

Permissões necessárias: O senhor deve ser um administrador do metastore ou ter o privilégio USE PROVIDER. Outros usuários têm acesso apenas aos provedores e às ações de provedores que possuem.

Para obter detalhes, consulte Exibir provedores.

Exibir detalhes do provedor

Para view detalhes sobre um provedor, o senhor pode usar o Catalog Explorer, o Databricks Unity Catalog CLI, ou o comando DESCRIBE PROVIDER SQL em um Databricks Notebook ou o editor de consultas Databricks SQL.

Permissões necessárias: O senhor deve ser um administrador do metastore, ter o privilégio USE PROVIDER ou ser proprietário do objeto do provedor.

Para obter detalhes, consulte Exibir detalhes do provedor.

Ver ações

Para view os compartilhamentos que um provedor compartilhou com o senhor, é possível usar o Catalog Explorer, o Databricks Unity Catalog CLI, ou o comando SHOW SHARES IN PROVIDER SQL em um Databricks Notebook ou o editor de consultas Databricks SQL.

Permissões necessárias: O senhor deve ser um administrador do metastore, ter o privilégio USE PROVIDER ou ser proprietário do objeto do provedor.

Para obter detalhes, consulte Visualizar compartilhamentos que um provedor compartilhou com o senhor.

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 a partir do compartilhamento que contém a tabela ou o volume. Pode ser um administrador do metastore, um usuário que tenha privilégios CREATE_CATALOG e USE PROVIDER para o metastore do Unity Catalog ou um usuário que tenha privilégio CREATE_CATALOG e propriedade do objeto do provedor.

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

  3. O senhor 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, é necessário criar um catálogo a partir do compartilhamento. Para criar um catálogo a partir de um compartilhamento, o senhor pode usar o Catalog Explorer, o Databricks Unity Catalog CLI, ou SQL comando em um Databricks Notebook ou o editor de consultas Databricks SQL.

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

Observação

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

  1. No seu workspace do Databricks, clique em Ícone de catálogo Catálogo para abrir o Catalog Explorer.

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

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

  3. No Shared with me tab, localize e selecione o provedor.

  4. Em Shares tab, localize o compartilhamento e clique em Create catalog (Criar catálogo ) na linha do compartilhamento.

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

  6. Clique em Criar.

Como alternativa, ao abrir o Catalog Explorer, o senhor pode clicar em Create Catalog (Criar catálogo ) no canto superior direito para criar um catálogo compartilhado. Consulte Criar catálogos.

Execute o seguinte comando em um notebook ou no editor de consultas SQL do Databricks.

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

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

Um catálogo Delta Sharing pode ser gerenciado da mesma forma que os catálogos regulares em um metastore Unity Catalog. O senhor pode view, atualizar e excluir um catálogo Delta Sharing usando o Catalog Explorer, o Databricks CLI, e usando SHOW CATALOGS, DESCRIBE CATALOG, ALTER CATALOG e DROP CATALOG SQL comando.

A estrutura de namespace de três níveis em um catálogo do 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 tabela e volume em um catálogo compartilhado são somente leitura, o que significa que o senhor pode realizar operações de leitura como:

  • DESCRIBE, SHOW e SELECT para tabelas.

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

O notebook em um catálogo compartilhado pode ser visualizado e clonado por qualquer usuário com USE CATALOG no 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 dos privilégios USE SCHEMA e USE CATALOG no esquema e no catálogo que contêm o modelo.

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

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

Os privilégios são herdados para baixo, embora alguns espaços de trabalho ainda possam estar no modelo de segurança legado que não oferece herança. Consulte Modelo de herança. Qualquer usuário que tenha recebido 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 que tenha recebido 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. O senhor não pode conceder privilégios que deem 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 dos 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 dos objetos.

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

Ler dados em uma tabela compartilhada

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

Ler dados em um volume compartilhado

O senhor pode ler dados em um volume compartilhado usando qualquer uma das ferramentas disponíveis como usuário do Databricks: Catalog Explorer, Notebook, consultas SQL, o Databricks CLI e Databricks REST APIs. O senhor deve 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 de lotes, consulte Carregar versão do modelo por alias para cargas de trabalho de inferência.

Consultar os dados históricos de uma tabela

Se a história for compartilhada junto com a tabela, o senhor poderá consultar os dados da tabela a partir de uma versão ou carimbo de data/hora. É necessário o site Databricks Runtime 12.2 LTS ou acima.

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 ativado com a tabela, o senhor poderá consultar o CDF. Tanto a versão quanto o registro de data e hora são compatíveis:

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, consulte Use Delta Lake change data feed em Databricks.

Consultar uma tabela usando Apache Spark transmissão estructurada

Se uma tabela for compartilhada com o histórico, o senhor poderá usá-la como fonte para Spark transmissão estructurada. É necessário o site Databricks Runtime 12.2 LTS ou acima.

Opções suportadas:

  • ignoreDeletes: Ignorar transações que excluem dados.

  • ignoreChanges: Processe novamente 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 de partições) ou OVERWRITE. As 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 downstream. ignoreChanges subsume ignoreDeletes. Portanto, se o senhor 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 o senhor deve começar. Todas as alterações na tabela a partir dessa versão (inclusive) serão lidas pela fonte de transmissão.

  • startingTimestamp: O registro de data e hora para começar. Todas as alterações de tabela confirmadas no registro de data e hora ou após esse registro (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 cada micro-lote.

  • maxBytesPerTrigger: A quantidade de dados que é processada em cada micro-lote. Essa opção define um "soft max", o que significa que um lote processa aproximadamente essa quantidade de dados e pode processar mais do que o limite para que a consulta de transmissão avance nos casos em que a menor unidade de entrada for maior do que esse limite.

  • readChangeFeedTransmissão: lê o feed de dados de alteração da tabela compartilhada.

Opções sem suporte:

  • Trigger.availableNow

Exemplo de consultas de transmissão estruturada

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 change data feed (CDF) estiver ativado com a tabela, o senhor poderá transmitir e ler o CDF.

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

Ler tabelas com vetores de exclusão ou mapeamento de colunas ativado

Prévia

Este recurso está em prévia 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?

O Databricks também oferece suporte ao mapeamento de colunas para tabelas Delta. Consulte Renomear e soltar colunas com o mapeamento de colunas do Delta Lake.

Se o provedor compartilhou uma tabela com vetores de exclusão ou mapeamento de coluna ativado, o senhor pode realizar leituras de lotes na tabela usando um SQL warehouse ou um cluster executando Databricks Runtime 14.1 ou acima. As consultas de CDF e transmissão exigem o site 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>)

Leia a visão compartilhada

Prévia

Este recurso está em prévia pública.

A leitura da exibição compartilhada é igual à leitura de tabelas compartilhadas, com as seguintes exceções:

ver restrições de compartilhamento:

O senhor não pode compartilhar visualizações que façam referência a tabelas compartilhadas ou visualizações compartilhadas.

Requisitos de nomenclatura:

O nome do catálogo que o senhor usa para o catálogo compartilhado que contém o view não pode ser igual ao de qualquer catálogo de provedor que contenha uma tabela referenciada pelo view. Por exemplo, se o view compartilhado estiver contido em seu catálogo test e uma das tabelas do provedor referenciadas nesse view estiver contida no catálogo test do provedor, a consulta resultará em um erro de conflito de namespace. Consulte Criar um catálogo a partir de um compartilhamento.

história e transmissão:

O senhor não pode consultar o histórico ou usar o site view como fonte de transmissão.

suporte à visualização em compartilhamento aberto:

As instruções deste artigo concentram-se na leitura do uso compartilhado de dados Databricks interfaces de usuário, especificamente Unity Catalog sintaxe e interfaces. O senhor também pode consultar a visualização compartilhada usando as ferramentas Apache Spark, Python e BI, como Tableau e Power BI.

Custos:

Há duas fontes potenciais de custo para o view compartilhamento:

  • custo de computação, cobrado por Databricks.

  • Custo de armazenamento e transferência de rede (saída), cobrado pelo fornecedor de armazenamento.

O custo de computação é baseado no tipo de destinatário compute recurso:

Beneficiário compute

Quem paga?

sku

Databricks sem servidor

Destinatário

sem servidor SKU usado pelo destinatário

Databricks Classic

Destinatário

Sem servidor interativo

Conectores Open Delta Sharing

Pro

Sem servidor interativo

Leia o Notebook compartilhado

Para visualizar e clonar arquivos compartilhados do Notebook, o senhor pode usar o Catalog Explorer.

Permissões necessárias: Proprietário do catálogo ou usuário 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 Catalog (Catálogo ), localize e selecione o catálogo criado a partir do compartilhamento.

  3. Em Other ativo tab, o senhor verá todos os arquivos compartilhados do Notebook.

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

  5. (Opcional) Clique no botão Clone para importar o arquivo do Notebook compartilhado para o site workspace.

    1. Na caixa de diálogo Clone to (Clonar para ), opcionalmente, digite um Novo nome e selecione a pasta workspace na qual deseja clonar o arquivo do Notebook.

    2. Clique em Clonar.

    3. Depois que o Notebook é clonado, é exibida uma caixa de diálogo para que o senhor saiba que a clonagem foi bem-sucedida. Clique em reveal (revelar) no editor do Notebook na caixa de diálogo para view no editor do Notebook.

    Consulte Introdução aos notebooks do Databricks.