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

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Quando você move dados do repositório de origem para o de destino, a atividade de cópia fornece uma opção para realizar a verificação de consistência de dados adicional a fim de garantir que os dados não sejam apenas copiados com êxito da origem para o repositório de destino, mas também verificados como consistentes entre o repositório de origem e destino. Quando arquivos inconsistentes são encontrados durante a movimentação de dados, você pode anular a atividade Copy ou continuar a copiar o restante habilitando a configuração de tolerância a falhas para ignorar arquivos inconsistentes. Você pode obter os nomes de arquivos ignorados habilitando a configuração de log de sessão na atividade de cópia. Você pode consultar o log de sessão na atividade de cópia para obter mais detalhes.

Fontes de dados e cenários com suporte

  • A verificação de consistência de dados é compatível com todos os conectores, exceto FTP, SFTP, HTTP, Snowflake, Office 365 e Azure Databricks Delta Lake.
  • Não há suporte para verificação de consistência de dados no cenário de cópia de preparo.
  • Ao copiar arquivos binários, a verificação de consistência de dados só estará disponível quando o comportamento de 'PreserveHierarchy' estiver definido na atividade de cópia.
  • Ao copiar vários arquivos binários em uma atividade de cópia única com a verificação de consistência de dados habilitada, você tem a opção de anular 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 em uma 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 de JSON para habilitar a verificação de consistência de dados na atividade de cópia:

"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 Descrição Valores permitidos Obrigató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 soma de verificação MD5 para cada arquivo binário copiado da origem para o repositório de destino para garantir a consistência dos dados entre o repositório de origem e de destino. Ao copiar dados tabulares, a atividade de cópia verificará a contagem total de linhas após o trabalho ser concluído para garantir 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 será afetado pela habilitação dessa opção. True
False (padrão)
Não
dataInconsistency Um dos pares chave-valor dentro do conjunto de propriedades skipErrorFile para determinar se você deseja ignorar os dados inconsistentes.
-True: você deseja copiar o restante ignorando arquivos inconsistentes.
- False: você deseja anular a atividade de cópia quando arquivos inconsistentes forem encontrados.
Lembre-se de que essa propriedade só é válida quando você está copiando arquivos binários e define validateDataConsistency como True.
True
False (padrão)
Não
logSettings Um grupo de propriedades que pode ser especificado para habilitar o log de sessão para arquivos ignorados. Não
linkedServiceName O serviço vinculado do Armazenamento de Blobs do Azure ou Azure Data Lake Storage Gen2 para armazenar os arquivos de log da sessão. O nome de um serviço vinculado AzureBlobStorage ou AzureBlobFS, que se refere à instância de armazenamento que você usa para armazenar os arquivos de log. Não
caminho O caminho dos arquivos de log. Especifique o caminho que você quer armazenar os arquivos de log. Se você não fornecer um caminho, o serviço criará um contêiner para você. Não

Observação

  • Ao copiar arquivos binários de ou para o Blob do Azure ou Azure Data Lake Storage Gen2, o serviço faz a soma de verificação MD5 em nível de bloco aproveitando a API de Blob do Azure e a API do Azure Data Lake Storage Gen2. Se o ContentMD5 nos arquivos existirem no Blob do Azure ou no Azure Data Lake Storage Gen2 como fontes de dados, o serviço também fará a soma de verificação MD5 em nível de arquivo depois de ler os arquivos. Depois de copiar os arquivos para o Blob do Azure ou Azure Data Lake Storage Gen2 como destino de dados, o serviço grava o ContentMD5 no Blob do Azure ou Azure Data Lake Storage Gen2 que depois pode ser consumido pelos 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 todos os armazenamentos.

Monitoramento

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 execução da atividade de cópia:

"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 da "propriedade dataConsistencyVerification".

Valor de VerificationResult:

  • Verified: Os dados copiados foram verificados para serem consistentes entre o repositório de origem e destino.
  • NotVerified: Seus dados copiados não foram verificados como consistentes porque você não habilitou o validateDataConsistency na atividade de cópia.
  • Unsupported: Seus dados copiados não foram verificados como consistentes porque a verificação de consistência de dados não tem suporte para esse par de cópia em particular.

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 para serem consistentes entre o repositório de origem e de destino ou porque você desabilitou o validateDataConsistency na atividade de cópia.

Log de sessão da atividade de cópia

Se você configurar para registrar em log os arquivos inconsistentes, 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 serão os arquivos csv.

O esquema de um arquivo de log é o seguinte:

Coluna Descrição
Timestamp O carimbo de data/hora quando o serviço ignora os arquivos inconsistentes.
Nível O nível de log deste item. Ele estará no nível de "Aviso" para o item que mostra o arquivo ignorado.
OperationName O comportamento operacional da atividade de cópia em cada arquivo. Será "FileSkip" para especificar o arquivo a ser ignorado.
OperationItem O nome de 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 sample1.csv foi ignorado porque ele não pôde ser verificado para ser consistente entre o repositório de origem e de destino. Você pode obter mais detalhes sobre por que o sample1.csv se torna inconsistente: ele estava sendo alterado por outros aplicativos quando a atividade de cópia estava sendo copiada ao mesmo tempo.

Próximas etapas

Consulte os outros artigos sobre atividade de cópia: