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

Область применения:Фабрика данных Azure Azure Synapse Analytics

Совет

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

Примечание.

  • При копировании двоичных файлов из большого двоичного объекта Azure или Azure Data Lake Storage 2-го поколения служба блокирует проверку md5 проверка sum, используя API BLOB-объектов Azure и API Azure Data Lake Storage 2-го поколения. Если ContentMD5 для файлов существует в хранилище BLOB-объектов Azure или Azure Data Lake Storage 2-го поколения в качестве источников данных, служба проверяет контрольную сумму MD5 на уровне файлов после их считывания. После копирования файлов в BLOB-объект Azure или Azure Data Lake Storage 2-го поколения в качестве места назначения служба записывает ContentMD5 в BLOB-объект Azure или 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-файлы.

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

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

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

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 стал несогласованным, указывают на то, что он был изменен другими приложениями при выполнении действия копирования службы.

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