Utilizar o Catálogo Unity com Transmissão em Fluxo Estruturado

Esta página mostra como usar o Structured Streaming com o Unity Catalog para gerir a governação de dados para as suas cargas de trabalho incrementais e de streaming no Azure Databricks.

Que funcionalidade de streaming estruturado é suportada pelo Unity Catalog?

O Unity Catalog não adiciona quaisquer limites explícitos para fontes e sinks de Structured Streaming disponíveis no Azure Databricks.

Com o Unity Catalog e o Structured Streaming podes:

  • Transmite dados tanto de tabelas geridas como externas. Ver tabelas geridas pelo Unity Catalog em Azure Databricks para Delta Lake e Apache Iceberg.
  • Use localizações externas geridas pelo Unity Catalog para interagir com dados usando URIs de armazenamento de objetos.
  • Escreve em tabelas externas usando nomes de tabelas ou caminhos de ficheiros. Para interagir com tabelas geridas, deve usar o nome da tabela.

Para pontos de controlo da transmissão estruturada, tem de utilizar caminhos em localizações externas geridas pelo Unity Catalog. Para saber mais sobre como conectar o armazenamento com segurança ao Unity Catalog, consulte Conectar-se ao armazenamento de objetos na nuvem usando o Unity Catalog.

Ler uma visualização do Catálogo Unity como um fluxo

No Databricks Runtime 14.3 LTS e superiores, pode usar o Structured Streaming para ler a partir de vistas registadas no Unity Catalog. As tabelas subjacentes devem usar o formato Delta Lake. Para outras limitações, veja Limitações.

Para ler uma vista com Structured Streaming, use o .table() método com o identificador da vista:

df = (spark.readStream
  .table("demoView")
)

Os utilizadores devem ter SELECT privilégios na vista de destino.

Se modificares a definição da vista para adicionar ou alterar as tabelas referenciadas na vista, não podes usar o mesmo checkpoint de streaming.

Opções de streaming suportadas

O leitor de streaming aplica opções aos ficheiros e metadados das tabelas Delta subjacentes para a vista especificada.

As seguintes opções são suportadas:

  • maxFilesPerTrigger
  • maxBytesPerTrigger
  • ignoreDeletes
  • skipChangeCommits
  • withEventTimeOrder
  • startingTimestamp
  • startingVersion

As leituras em vistas com UNION ALL não suportam as opções withEventTimeOrder e startingVersion.

Se fornecer opções não suportadas, como readChangeFeed, o Spark levanta esta exceção:

AnalysisException: [UNSUPPORTED_STREAMING_OPTIONS_FOR_VIEW.UNSUPPORTED_OPTION] Unsupported for streaming a view. Reason: option <option> is not supported.

Operações de streaming suportadas

As operações apoiadas incluem:

Operation Description Operator Exemplo
Projeto Controla permissões ao nível das colunas SELECT... FROM... CREATE VIEW project_view AS SELECT id, value FROM source_table
Filter Controla permissões ao nível das linhas WHERE... CREATE VIEW filter_view AS SELECT * FROM source_table WHERE value > 100
Sindicato todos Resultados de múltiplas tabelas UNION ALL CREATE VIEW union_view AS SELECT id, value FROM source_table1 UNION ALL SELECT * FROM source_table2

Operações não suportadas incluem agregações, ordenação e funções de tabela como table_changes(). Para detalhes sobre funções com valores em tabelas, veja Invocação de funções com valores em tabela (TVF).

Se fizer streaming a partir de uma vista com uma operação não suportada, o Spark gera esta exceção:

UnsupportedOperationException: [UNEXPECTED_OPERATOR_IN_STREAMING_VIEW] Unexpected operator <operator> in the CREATE VIEW statement as a streaming source. A streaming view query must consist only of SELECT, WHERE, and UNION ALL operations.

Limitações