Partilhar via


Verificação da consistência dos dados na atividade de cópia

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Gorjeta

Experimente o Data Factory no Microsoft Fabric, uma solução de análise tudo-em-um para empresas. O Microsoft Fabric abrange tudo, desde a movimentação de dados até ciência de dados, análises em tempo real, business intelligence e relatórios. Saiba como iniciar uma nova avaliação gratuitamente!

Quando você move dados do armazenamento de origem para o de destino, a atividade de cópia fornece uma opção para você fazer uma verificação adicional de consistência de dados para garantir que os dados não apenas sejam copiados com êxito do armazenamento de origem para o de destino, mas também verificados para serem consistentes entre o armazenamento de origem e de destino. Depois que arquivos inconsistentes forem encontrados durante a movimentação de dados, você poderá abortar a atividade de cópia ou continuar a copiar o restante ativando a configuração de tolerância a falhas para ignorar arquivos inconsistentes. Você pode obter os nomes de arquivo ignorados ativando a configuração de log de sessão na atividade de cópia. Você pode consultar a atividade de cópia de log de sessão para obter mais detalhes.

Cenários e armazenamentos de dados suportados

  • A verificação de consistência de dados é suportada por todos os conectores, exceto FTP, SFTP, HTTP, Snowflake, Office 365 e Azure Databricks Delta Lake.
  • A verificação de consistência de dados não é suportada no cenário de cópia de preparação.
  • Ao copiar arquivos binários, a verificação da consistência de dados só está disponível quando o comportamento 'PreserveHierarchy' é definido na atividade de cópia.
  • Ao copiar vários arquivos binários em uma única atividade de cópia com a verificação de consistência de dados habilitada, você tem uma opção para abortar a atividade de cópia ou continuar a copiar o restante habilitando a configuração de tolerância a falhas para ignorar arquivos inconsistentes.
  • Ao copiar uma tabela na atividade de cópia única com a verificação de consistência de dados habilitada, a atividade de cópia falhará se o número de linhas lidas da origem for diferente do número de linhas copiadas para o destino mais o número de linhas incompatíveis que foram ignoradas.

Configuração

O exemplo a seguir fornece uma definição JSON para habilitar a verificação de consistência de dados em Copy Activity:

{
  "name":"CopyActivityDataConsistency",
  "type":"Copy",
  "typeProperties": { 
    "source": { 
        "type": "BinarySource", 
        "storeSettings": { 
            "type": "AzureDataLakeStoreReadSettings", 
            "recursive": true 
        } 
    }, 
    "sink": { 
        "type": "BinarySink", 
        "storeSettings": { 
            "type": "AzureDataLakeStoreWriteSettings" 
        } 
    }, 
    "validateDataConsistency": true, 
    "skipErrorFile": { 
        "dataInconsistency": true 
    }, 
    "logSettings": {
        "enableCopyActivityLog": true,
        "copyActivityLogSettings": {
            "logLevel": "Warning",
            "enableReliableLogging": false
        },
        "logLocationSettings": {
            "linkedServiceName": {
               "referenceName": "ADLSGen2",
               "type": "LinkedServiceReference"
            },
            "path": "sessionlog/"
        }
    }
} 
Propriedade Description Valores permitidos Necessário
validateDataConsistency Se você definir true para essa propriedade, ao copiar arquivos binários, a atividade de cópia verificará o tamanho do arquivo, lastModifiedDate e a soma de verificação MD5 para cada arquivo binário copiado do armazenamento de origem para o de destino para garantir a consistência de dados entre o armazenamento de origem e de destino. Ao copiar dados tabulares, a atividade de cópia verificará a contagem total de linhas após a conclusão do trabalho, garantindo que o número total de linhas lidas da origem seja igual ao número de linhas copiadas para o destino mais o número de linhas incompatíveis que foram ignoradas. Lembre-se de que o desempenho da cópia é afetado pela ativação dessa opção. True
Falso (predefinição)
Não
inconsistência de dados Um dos pares chave-valor dentro do saco de propriedades skipErrorFile para determinar se você deseja ignorar os arquivos inconsistentes.
-True: você deseja copiar o resto ignorando arquivos inconsistentes.
- Falso: você deseja abortar a atividade de cópia uma vez encontrado um arquivo inconsistente.
Lembre-se de que essa propriedade só é válida quando você estiver copiando arquivos binários e definir validateDataConsistency como True.
True
Falso (predefinição)
Não
logSettings Um grupo de propriedades que podem ser especificadas para habilitar o log de sessão para registrar arquivos ignorados. Não
linkedServiceName O serviço vinculado do Armazenamento de Blobs do Azure ou do Azure Data Lake Storage Gen2 para armazenar os arquivos de log de sessão. Os nomes de um AzureBlobStorage ou AzureBlobFS tipos de serviço vinculado, que se refere à instância que você usa para armazenar os arquivos de log. Não
path O caminho dos arquivos de log. Especifique o caminho que você deseja armazenar os arquivos de log. Se você não fornecer um caminho, o serviço criará um contêiner para você. Não

Nota

  • Ao copiar arquivos binários de ou para o Blob do Azure ou o Azure Data Lake Storage Gen2, o serviço bloqueia a verificação de soma de verificação MD5 aproveitando a API de Blob do Azure e a API do Azure Data Lake Storage Gen2. Se o ContentMD5 em arquivos existir no Blob do Azure ou no Azure Data Lake Storage Gen2 como fontes de dados, o serviço fará a verificação da soma de verificação MD5 no nível do arquivo depois de ler os arquivos também. Depois de copiar arquivos para o Blob do Azure ou o Azure Data Lake Storage Gen2 como destino de dados, o serviço grava o ContentMD5 no Blob do Azure ou no Azure Data Lake Storage Gen2, que pode ser consumido ainda mais por aplicativos downstream para verificação de consistência de dados.
  • O serviço faz a verificação do tamanho do arquivo ao copiar arquivos binários entre quaisquer armazenamentos de armazenamento.

Monitorização

Saída da atividade de cópia

Depois que a atividade de cópia for executada completamente, você poderá ver o resultado da verificação de consistência de dados da saída de cada atividade de cópia executada:

"output": {
            "dataRead": 695,
            "dataWritten": 186,
            "filesRead": 3,  
            "filesWritten": 1, 
            "filesSkipped": 2, 
            "throughput": 297,
            "logFilePath": "myfolder/a84bf8d4-233f-4216-8cb5-45962831cd1b/",
            "dataConsistencyVerification": 
           { 
                "VerificationResult": "Verified", 
                "InconsistentData": "Skipped" 
           } 
        }

Você pode ver os detalhes da verificação de consistência de dados em "dataConsistencyVerification property".

Valor de VerificationResult:

  • Verificado: Os dados copiados foram verificados para serem consistentes entre o armazenamento de origem e de destino.
  • NotVerified: Seus dados copiados não foram verificados para serem consistentes porque você não habilitou o validateDataConsistency na atividade de cópia.
  • Sem suporte: os dados copiados não foram verificados para serem consistentes porque a verificação de consistência de dados não é suportada para este par de cópias específico.

Valor de InconsistentData:

  • Encontrado: a atividade de cópia encontrou dados inconsistentes.
  • Ignorado: a atividade de cópia encontrou e ignorou dados inconsistentes.
  • Nenhum: a atividade de cópia não encontrou dados inconsistentes. Pode ser porque seus dados foram verificados como consistentes entre o armazenamento de origem e de destino ou porque você desabilitou validateDataConsistency na atividade de cópia.

Log de sessão da atividade de cópia

Se você configurar para registrar o arquivo inconsistente, poderá encontrar o arquivo de log neste caminho: https://[your-blob-account].blob.core.windows.net/[path-if-configured]/copyactivity-logs/[copy-activity-name]/[copy-activity-run-id]/[auto-generated-GUID].csv. Os arquivos de log são os arquivos csv.

O esquema de um arquivo de log é o seguinte:

Coluna Description
Carimbo de Data/Hora O carimbo de data/hora quando o serviço ignora os arquivos inconsistentes.
Nível O nível de log deste item. Está no nível 'Aviso' para o item que mostra o arquivo ignorando.
OperationName O comportamento operacional da atividade de cópia em cada arquivo. É 'FileSkip' para especificar o arquivo a ser ignorado.
OperationItem O nome do arquivo a ser ignorado.
Mensagem Mais informações para ilustrar por que os arquivos estão sendo ignorados.

O exemplo de um arquivo de log é o seguinte:

Timestamp, Level, OperationName, OperationItem, Message
2020-02-26 06:22:56.3190846, Warning, FileSkip, "sample1.csv", "File is skipped after read 548000000 bytes: ErrorCode=DataConsistencySourceDataChanged,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Source file 'sample1.csv' is changed by other clients during the copy activity run.,Source=,'." 

No arquivo de log acima, você pode ver que o exemplo1.csv foi ignorado porque não foi verificado se era consistente entre o armazenamento de origem e de destino. Você pode obter mais detalhes sobre por que sample1.csv se torna inconsistente é porque estava sendo alterado por outros aplicativos quando a atividade de cópia está copiando ao mesmo tempo.

Veja os outros artigos da Atividade de cópia: