Проверка согласованности данных в операции копирования

ПРИМЕНИМО К: Фабрика данных Azure Azure Synapse Analytics

Совет

Data Factory в Microsoft Fabric — это следующее поколение Фабрика данных Azure с более простой архитектурой, встроенным ИИ и новыми функциями. Если вы новичок в интеграции данных, начните с Fabric Data Factory. Существующие рабочие нагрузки ADF могут обновляться до Fabric для доступа к новым возможностям в области обработки и анализа данных, аналитики в режиме реального времени и отчетов.

При перемещении данных из источника в целевое хранилище действие копирования позволяет выполнять дополнительную проверку согласованности данных, чтобы убедиться, что данные не только успешно копируются из источника в целевое хранилище, но и проверяются на согласованность между исходным и целевым хранилищем. После обнаружения несогласованных файлов во время перемещения можно либо прервать действие копирования, либо продолжить копирование остальных данных, включив параметр отказоустойчивости для пропуска несогласованных файлов. Имена пропущенных файлов можно получить, включив параметр ведения журнала сеанса в действии копирования. Дополнительные сведения см. в журнале сеансов в операции копирования.

Поддерживаемые хранилища данных и сценарии

  • Проверка согласованности данных поддерживается всеми соединителями, кроме FTP, SFTP, HTTP, Snowflake, Office 365 и Azure Databricks Delta Lake.
  • Проверка согласованности данных не поддерживается в сценарии промежуточного копирования.
  • При копировании двоичных файлов проверка согласованности доступна только в том случае, если в действии копирования задано поведение "PreserveHierarchy".
  • При копировании нескольких двоичных файлов в одном действии копирования с включенной проверкой согласованности можно либо прервать действие копирования, либо продолжить копирование остальных элементов, включив параметр отказоустойчивости для пропуска несогласованных файлов.
  • При копировании таблицы в одном действии копирования с включенной проверкой согласованности действие копирования завершается ошибкой, если число строк, считанных из источника, отличается от суммы числа строк, скопированных в целевое хранилище, и числа пропущенных несогласованных строк.

Настройка

В следующем примере представлено определение JSON для включения проверки согласованности данных в действие копирования.

{
  "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/"
        }
    }
} 
Свойство Описание Допустимые значения Обязательное поле
проверкаСогласованностиДанных Если для этого свойства задано значение true, при копировании двоичных файлов действие копирования проверяет размер файла, lastModifiedDate и контрольную сумму для каждого двоичного файла, скопированного из источника в целевое хранилище, чтобы обеспечить согласованность данных между исходным и целевым хранилищем. При копировании табличных данных действие копирования проверяет общее число строк после завершения задания, что гарантирует, что общее количество строк, считываемых из источника, совпадает с количеством строк, скопированных в место назначения, а также число несовместимых строк, пропущенных. Помните, что производительность копирования зависит от включения этого параметра. Истина
False (по умолчанию)
Нет
несогласованность данных Одна из пар "ключ-значение" в контейнере свойств skipErrorFile, определяющая необходимость пропуска несогласованных файлов.
— True: вы хотите скопировать остальные файлы, пропуская несовместимые.
— False: необходимо прервать действие копирования при обнаружении несогласованных файлов.
Обратите внимание, что это свойство действительно только при копировании двоичных файлов и в том случае, если свойство validateDataConsistency имеет значение True.
Истина
False (по умолчанию)
Нет
настройки логирования Группа свойств, которые позволяют задать ведение журнала сеанса для записи пропущенных файлов. Нет
linkedServiceName Связанная служба Хранилище BLOB-объектов Azure или Azure Data Lake Storage 2-го поколения для хранения файлов журнала сеансов. Имена типов связанных служб AzureBlobStorage или AzureBlobFS, которые указывают на экземпляр, используемый для хранения файлов журналов. Нет
путь Путь к файлам журнала. Укажите путь, по которому следует хранить файлы журнала. Если путь не указан, служба создаст контейнер самостоятельно. Нет

Примечание.

  • При копировании двоичных файлов из или в Azure Blob или Azure Data Lake Storage 2-го поколения служба выполняет проверку контрольной суммы на уровне блоков с использованием Azure Blob API и Azure Data Lake Storage 2-го поколения API. Если ContentMD5 для файлов существует в хранилище Azure Blob или Azure Data Lake Storage 2-го поколения как источники данных, служба также выполняет проверку контрольной суммы на уровне каждого отдельного файла после их чтения. После копирования файлов в Azure Blob или Azure Data Lake Storage 2-го поколения в качестве целевого хранилища данных, служба записывает ContentMD5 в Azure Blob или Azure Data Lake Storage 2-го поколения, что может быть использовано последующими приложениями для проверки согласованности данных.
  • Служба проверяет размер файлов при копировании двоичных файлов между хранилищами.

Наблюдение

Выходные данные действия копирования

После выполнения действия копирования можно просмотреть результат проверки согласованности данных в выходных данных каждого запуска действия копирования.

"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" 
           } 
        }

Подробные сведения о проверке согласованности данных представлены в свойстве dataConsistencyVerification.

Значение параметра VerificationResult:

  • Verified. Для скопированных данных выполнена проверка согласованности между исходным и конечным хранилищами.
  • NotVerified: скопированные данные не были проверены на соответствие, так как вы не включили проверкуDataConsistency в действии копирования.
  • Неподдерживаемый: скопированные данные не были проверены на соответствие, так как проверка согласованности данных не поддерживается для данной пары копирования.

Значение параметра InconsistentData:

  • Found. Действие копирования обнаружило несогласованные данные.
  • Skipped. Действие копирования обнаружило и пропустило неконсистентные данные.
  • Нет: При операции копирования не было найдено несогласованных данных. Причиной может быть либо то, что уже была выполнена проверка согласованности данных между исходным и конечным хранилищами, либо то, что отключили параметр validateDataConsistency в действии копирования.

Журнал сеансов операции копирования

Если вы настроили регистрацию несогласованных файлов в журнале, файл журнала можно найти по этому пути: https://[your-blob-account].blob.core.windows.net/[path-if-configured]/copyactivity-logs/[copy-activity-name]/[copy-activity-run-id]/[auto-generated-GUID].csv. Файлы журнала — это CSV-файлы.

Ниже приведена схема файла журнала.

Столбец Описание
Метка времени Метка времени, когда служба пропускает несоответствующие файлы.
Уровень Уровень логирования для этого элемента. Он находится на уровне "Предупреждение" для элемента, отображающего пропуск файла.
НазваниеОперации Операционное поведение активности копирования для каждого файла. Это FileSkip, чтобы указать файл, который нужно пропустить.
Элемент операции Имя файла, который будет пропущен.
Сообщение Дополнительные сведения, объясняющие, почему файлы пропускаются.

Ниже приведен пример файла журнала.

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=,'." 

Из файла журнала, приведенного выше, можно увидеть, что файл sample1.csv был пропущен, поскольку его не удалось проверить на согласованность в исходном и целевом хранилищах. Вы можете узнать больше о том, почему файл sample1.csv становится несогласованным: это происходит потому, что он изменяется другими приложениями в то время, когда выполняется процесс копирования.

См. другие статьи о действиях копирования: