Partilhar via


Ler informações de estado do Streaming Estruturado

Importante

Esta funcionalidade está em Pré-visualização Pública.

No Databricks Runtime 14.3 LTS e superior, você pode usar operações DataFrame ou funções de valor de tabela SQL para consultar dados e metadados de estado do Streaming Estruturado. Você pode usar essas funções para observar informações de estado para consultas com estado de Streaming Estruturado, 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 streaming para consultar dados de estado ou metadados. As funções descritas neste artigo fornecem acesso somente leitura a dados de estado e metadados. Você só pode usar a semântica de leitura em lote para consultar informações de estado.

Nota

Não é possível consultar informações de estado para pipelines Delta Live Tables, tabelas de streaming ou exibições materializadas.

Ler armazenamento de estado de streaming estruturado

Você pode ler informações de armazenamento de estado para consultas de Streaming Estruturado executadas em qualquer Databricks Runtime suportado. Utilize a seguinte sintaxe:

Python

df = (spark.read
  .format("statestore")
  .load("/checkpoint/path"))

SQL

SELECT * FROM read_statestore('/checkpoint/path')

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

Opção Type Default value Description
batchId Longo ID do lote mais recente Representa o lote de destino a partir do qual ler. Especifique esta opção para consultar informações de estado para um estado anterior da consulta. O lote deve ser comprometido, mas ainda não limpo.
operatorId Longo 0 Representa o operador de destino a partir do qual ler. Essa opção é usada quando a consulta está usando vários operadores com monitoração de estado.
storeName String "PADRÃO" Representa o nome do armazenamento de estado de destino a partir do qual ler. Essa opção é usada quando o operador stateful usa várias instâncias de armazenamento de estado. Ou storeName joinSide deve ser especificado para uma junção fluxo-vapor, mas não ambos.
joinSide String ("esquerda" ou "direita") Representa o lado de destino a partir do qual ler. Essa opção é usada quando os usuários desejam ler o estado da junção de fluxo de fluxo.

Os dados retornados têm o seguinte esquema:

Column Tipo Description
key Struct (outro tipo derivado da chave de estado) A chave para um registro de operador com monitoração de estado no ponto de verificação de estado.
value Struct (outro tipo derivado do valor do estado) O valor de um registro de operador com monitoração de estado no ponto de verificação de estado.
partition_id Número inteiro A partição do ponto de verificação de estado que contém o registro de operador com monitoração de estado.

Ler metadados de estado do Streaming Estruturado

Importante

Você deve executar consultas de streaming no Databricks Runtime 14.2 ou superior 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 streaming no Databricks Runtime 14.1 ou inferior, 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 consultas de Streaming Estruturado executadas no Databricks Runtime 14.2 ou superior. Utilize a seguinte sintaxe:

Python

df = (spark.read
  .format("state-metadata")
  .load("<checkpointLocation>"))

SQL

SELECT * FROM read_state_metadata('/checkpoint/path')

Os dados retornados têm o seguinte esquema:

Column Tipo Description
operatorId Número inteiro A ID inteira do operador de streaming com monitoração de estado.
operatorName Número inteiro Nome do operador de streaming com monitoração de estado.
stateStoreName String Nome do armazenamento de estado do operador.
numPartitions Número inteiro Número de partições do armazenamento de estado.
minBatchId Longo O ID de lote mínimo disponível para o estado de consulta.
maxBatchId Longo O ID de lote máximo disponível para o estado de consulta.

Nota

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 de microlotes, portanto, não é garantido que o valor fornecido aqui ainda esteja disponível.