Partilhar via


FSCK REPAIR TABLE

Aplica-se a:assinalado com sim Databricks SQL assinalado com sim Databricks Runtime

Detete e corrige problemas de metadados e ficheiros de dados para uma tabela Delta. O comando tem três níveis progressivos:

  • Repare apenas o registo de transações
  • Repare o registo de transações e remova ficheiros de dados em falta
  • Repare o registo de transações, remova ficheiros de dados em falta e remova ficheiros de dados corrompidos

Cada nível inclui todas as operações dos níveis anteriores.

Sintaxe

FSCK REPAIR TABLE table_name [fsck_mode] [DRY RUN]

fsck_mode
  { METADATA ONLY |
    VERIFY ALL FILES |
    VERIFY FILES MODIFIED BETWEEN start_timestamp AND end_timestamp }

Parâmetros

  • table_name

    Identifica uma tabela Delta existente. O nome não deve incluir uma especificação temporal ou uma especificação de opções.

  • fsck_mode

    Aplica-se a:marcado com sim Databricks Runtime 18.0, e posteriores

    Define quais as ações a tomar.

    • Se não especificado (modo padrão):

      • Valida e repara o registo de transações necessário para construir o snapshot da tabela mais recente.
      • Remove referências da tabela a ficheiros de dados que já não existem no sistema de ficheiros subjacente.
      • Remove referências da tabela para ficheiros de dados cujos valores de partição violam NOT NULL restrições.
    • METADATA ONLY

      Valida e repara o registo de transações necessário para construir o snapshot da tabela mais recente.

    • VERIFY ALL FILES

      Realiza todas as operações a partir do modo padrão. Valida a integridade de todos os ficheiros de dados ativos. Remove referências da tabela a quaisquer ficheiros que falhem na verificação de integridade.

    • VERIFY FILES MODIFIED BETWEEN start_timestamp AND end_timestamp

      Realiza todas as operações a partir do modo padrão. Valida a integridade dos ficheiros de dados ativos cujo tempo de modificação ocorre dentro da janela de tempo especificada. Remove referências da tabela a quaisquer ficheiros que falhem na verificação de integridade. Tanto start_timestamp como end_timestamp devem ser expressões constantes que resultem em carimbos temporais. As expressões podem incluir current_timestamp() e current_date() funções.

  • ENSAIO

    Enumera, sem alterar, os problemas de metadados e ficheiros de dados que FSCK REPAIR TABLE seriam reparados.

    Por padrão, DRY RUN retorna apenas os primeiros 1000 arquivos. Pode aumentar este limiar definindo a variável spark.databricks.delta.fsck.maxNumEntriesInResult de sessão para um valor mais alto antes de executar o comando num caderno.

Observações

  • O FSCK repara apenas o snapshot mais recente da tabela. Os checkpoints históricos e ficheiros inativos não são validados nem reparados.

  • Ao verificar a existência de ficheiros em modo padrão ou validar a integridade do ficheiro em VERIFY modos, FSCK também valida quaisquer vetores de eliminação associados. Se o ficheiro de dados Parquet ou o seu vetor de eliminação associado estiverem em falta ou corrompidos, as referências são removidas da tabela.

Devoluções

Quando executado com DRY RUN, o comando devolve um DataFrame com o seguinte esquema:

  • dataFilePath STRING NOT NULL
  • dataFileMissing BOOLEAN NOT NULL
  • deletionVectorPath STRING
  • deletionVectorFileMissing BOOLEAN NOT NULL

Aplica-se a:marcado com sim Databricks Runtime 18.0, e posteriores

  • checkpointFilePath STRING
  • fileCrcCorrupt BOOLEAN NOT NULL
  • fileUnreadable BOOLEAN NOT NULL
  • fileMetadataHasInvalidPartitionValues BOOLEAN NOT NULL
  • deletionVectorCorrupt BOOLEAN NOT NULL

Exemplos

— Assume 005.checkpoint.parquet has CRC checksum corruption.
> FSCK REPAIR TABLE t METADATA ONLY DRY RUN;
 dataFilePath dataFileMissing deletionVectorPath deletionVectorFileMissing checkpointFilePath                fileCrcCorrupt fileUnreadable fileMetadataHasInvalidPartitionValues deletionVectorCorrupt
 ------------ --------------- ------------------ ------------------------- --------------------------------- -------------- -------------- ------------------------------------- ---------------------
 null         false           null               false                     _delta_log/005.checkpoint.parquet true           false          false                                 false

— Assume file1.parquet is missing, whose deletion vector dv1.bin is also missing.
— Assume file2.parquet has partition value being NULL, where the partition column is NOT NULL.
> FSCK REPAIR TABLE t DRY RUN;
 dataFilePath  dataFileMissing deletionVectorPath deletionVectorFileMissing checkpointFilePath fileCrcCorrupt fileUnreadable fileMetadataHasInvalidPartitionValues deletionVectorCorrupt
 ------------- --------------- ------------------ ------------------------- ------------------ -------------- -------------- ------------------------------------- ---------------------
 file2.parquet true            dv1.bin            true                      null               false          false          false                                 false
 file2.parquet false           null               false                     null               null           null           true                                  false

— Assume file1.parquet is corrupt and unreadable.
— Assume file2.parquet has a corrupt deletion vector dv2.bin.
> FSCK REPAIR TABLE t VERIFY ALL FILES DRY RUN;
 dataFilePath  dataFileMissing deletionVectorPath deletionVectorFileMissing checkpointFilePath fileCrcCorrupt fileUnreadable fileMetadataHasInvalidPartitionValues deletionVectorCorrupt
 ------------- --------------- ------------------ ------------------------- ------------------ -------------- -------------- ------------------------------------- ---------------------
 file1.parquet false           null               false                     null               false          true           false                                 false
 file2.parquet false           dv2.bin            false                     null               null           null           false                                 true