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

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Dica

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

Quando você move dados do armazenamento de origem para o de destino, a atividade de cópia oferece uma opção para que você faça uma verificação adicional da consistência dos dados para garantir que os dados não sejam apenas copiados com êxito do armazenamento de origem para o de destino, mas também verificados quanto à consistência entre o armazenamento de origem e o de 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.
  • A verificação da consistência dos dados não é compatível com o cenário de cópia de preparação.
  • 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:

{
  "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 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 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. Esteja ciente de que o desempenho da cópia é afetado pela ativação dessa opção. Verdadeiro
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: A consistência dos dados copiados não foi verificada porque você não ativou a função validateDataConsistency na atividade de cópia.
  • Unsupported: Seus dados copiados não foram verificados quanto à consistência porque a verificação de consistência de dados não é suportada para esse 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 nenhum dado inconsistente. 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 registro sã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 está no nível "Aviso" para o item que mostra a omissão de arquivos.
OperationName O comportamento operacional da atividade de cópia em cada arquivo. É '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.

Consulte os outros artigos sobre atividade de cópia: