Partilhar via


Ler informações de estado do Streaming Estruturado

No Databricks Runtime 14.3 LTS e superior na computação configurada com modo de acesso dedicado ou sem isolamento, 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 em fluxo contínuo a fim de 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 DLT, tabelas de streaming ou visões materializadas. Não é possível consultar informações de estado usando computação sem servidor ou computação configurada com o modo de acesso padrão.

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 Tipo Valor padrão Descrição
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 confirmado, mas ainda não finalizado.
operatorId Longo 0 Representa o operador de destino a partir do qual ler. Esta opção é usada quando a consulta utiliza múltiplos operadores com estado.
storeName Cadeia "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. Tanto storeName como joinSide devem ser especificados para uma junção fluxo-vapor, mas não ambos.
joinSide Cadeia de caracteres ("esquerda" ou "direita") Representa o lado de destino a partir do qual ler. Esta opção é utilizada quando os utilizadores desejam ler o estado resultante de uma junção de fluxos.

Os dados retornados têm o seguinte esquema:

Coluna Tipo Descrição
key Struct (outro tipo derivado da chave de estado) A chave para um registro de operador com estado no ponto de verificação de estado.
value Struct (tipo adicional derivado do valor de estado) O valor de um registo de operador com estado no ponto de verificação de estado.
partition_id Número inteiro A partição do ponto de verificação do estado que contém o registo do operador com 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:

Coluna Tipo Descrição
operatorId Número inteiro O ID inteiro do operador de streaming com estado.
operatorName Número inteiro Nome do operador de streaming com 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 máximo de lote disponível para a consulta de estado.

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.