Ler transmissão estruturada de informações estaduais

Visualização

Esse recurso está em Prévia Pública.

No Databricks Runtime 14.3 LTS e acima, você pode usar operações DataFrame ou funções de valor de tabela SQL para consultar dados e metadados de estado de transmissão estruturada. Você pode usar essas funções para observar informações de estado para consultas stateful de transmissão estruturada, o que pode ser útil para monitoramento e depuração.

Você deve ter acesso de leitura ao caminho do ponto de verificação para uma consulta de transmissão para consultar dados de estado ou metadados. As funções descritas neste artigo fornecem acesso somente leitura a dados e metadados de estado. Você só pode usar a semântica de leitura de lotes para consultar informações de estado.

Observação

Você não pode consultar informações de estado para pipeline Delta Live Tables, tabelas de transmissão ou visualização materializada.

Leia transmissão estruturada armazenamento do estado

Você pode ler o armazenamento do estado informação para consultas de transmissão estruturada executadas em qualquer Databricks Runtime compatível. Use a seguinte sintaxe:

df = (spark.read
  .format("statestore")
  .load("/checkpoint/path"))
SELECT * FROM read_statestore('/checkpoint/path')

As seguintes configurações opcionais são suportadas:

Opção

Tipo

Valor padrão

Descrição

batchId

Long

ID dos últimos lotes

Representa os lotes de destino a serem lidos. Especifique esta opção para consultar informações de estado para um estado anterior da consulta. Os lotes devem estar comprometidos, mas ainda não liquidados.

operatorId

Long

0

Representa o operador de destino do qual ler. Esta opção é usada quando a consulta usa vários operadores com estado.

storeName

String

padrão"

Representa o nome do armazenamento do estado de destino a ser lido. Esta opção é usada quando o operador stateful utiliza múltiplas instâncias de armazenamento do estado. storeName ou joinSide devem ser especificados para uma transmissão-steam join, mas não ambos.

joinSide

strings (“esquerda” ou “direita”)

Representa o lado de destino do qual ler. Esta opção é utilizada quando o usuário deseja ler o estado do join transmissão-transmissão.

Os dados retornados possuem o seguinte esquema:

Coluna

Tipo

Descrição

key

Struct (tipo adicional derivado da key de estado)

A key para um registro de operador com estado no ponto de verificação de estado.

value

Struct (tipo adicional derivado do valor do estado)

O valor de um registro de operador com estado no ponto de verificação de estado.

partition_id

Inteiro

A partição do ponto de verificação de estado que contém o registro do operador com estado.

Ler metadados do estado da transmissão estruturada

Importante

Você deve executar a transmissão de consultas no Databricks Runtime 14.2 ou acima para registrar metadados de estado. Os arquivos de metadados de estado não quebram a compatibilidade com versões anteriores. Se você optar por executar uma consulta de transmissão no Databricks Runtime 14.1 ou abaixo, os arquivos de metadados de estado existentes serão ignorados e nenhum novo arquivo de metadados de estado será gravado.

Você pode ler informações de metadados de estado para execução de consultas de transmissão estruturada no Databricks Runtime 14.2 ou acima. Use a seguinte sintaxe:

df = (spark.read
  .format("state-metadata")
  .load("<checkpointLocation>"))
SELECT * FROM read_state_metadata('/checkpoint/path')

Os dados retornados possuem o seguinte esquema:

Coluna

Tipo

Descrição

operatorId

Inteiro

O ID inteiro do operador de transmissão com estado.

operatorName

Inteiro

Nome do operador de transmissão stateful.

stateStoreName

String

Nome do armazenamento do estado do operador.

numPartitions

Inteiro

Número de divisórias do armazenamento do estado.

minBatchId

Long

O ID dos lotes mínimos disponíveis para consulta de estado.

maxBatchId

Long

O ID máximo de lotes disponível para consulta de estado.

Observação

Os valores de ID de lote fornecidos por minBatchId e maxBatchId refletem o estado no momento em que o ponto de verificação foi gravado. Os lotes antigos são limpos automaticamente com a execução dos microlotes, portanto não há garantia de que o valor aqui informado ainda esteja disponível.