複製活動中的資料一致性驗證

適用于: Azure Data Factory Azure Synapse Analytics

提示

試用 Microsoft Fabric 中的 Data Factory,這是適用于企業的單一分析解決方案。 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/"
        }
    }
} 
屬性 說明 允許的值 必要
validateDataConsistency 如果您為此屬性設定 true,複製活動會檢查從來源複製到目的地存放區之每個二進位檔的檔案大小、lastModifiedDate 和 MD5 總和檢查碼,以確保來源和目的地存放區之間的資料一致性。 複製表格式資料時,複製活動會在作業完成之後檢查資料列計數總計,確保從來源讀取的資料列總數與複製到目的地的資料列數目以及略過不相容的資料列數目相同。 請注意,啟用此選項會影響複製效能。 True
False (預設)
No
dataInconsistency skipErrorFile 屬性包內的其中一個索引鍵/值組,以判斷您是否要略過不一致的檔案。
-True:您想要略過不一致的檔案來複製其餘的檔案。
- False:一旦找到不一致的檔案,您想要中止複製活動。
請注意,只有在複製二進位檔案並將 validateDataConsistency 設定為 True 時,此屬性才有效。
True
False (預設)
No
log設定 可指定一組屬性,以啟用會話記錄來記錄略過的檔案。 No
linkedServiceName Azure Blob 儲存體 Azure Data Lake 儲存體 Gen2 的連結服務 ,以儲存會話記錄檔。 AzureBlobFS 型別連結服務的名稱 AzureBlobStorage ,其是指您用來儲存記錄檔的實例。 No
path 記錄檔的路徑。 指定您要儲存記錄檔的路徑。 如果您沒有提供路徑,服務會為您建立容器。 No

注意

  • 從 Azure Blob 或 Azure Data Lake 儲存體 Gen2 複製二進位檔案時,服務會利用 Azure Blob API Azure Data Lake 儲存體 Gen2 API 來封鎖層級 MD5 總和檢查碼驗證。 如果 Azure Blob 或 Azure Data Lake 儲存體 Gen2 上的檔案上存在 ContentMD5 作為資料來源,服務會在讀取檔案之後執行檔案層級 MD5 總和檢查碼驗證。 將檔案複製到 Azure Blob 或 Azure Data Lake 儲存體 Gen2 作為資料目的地之後,服務會將 ContentMD5 寫入 Azure Blob 或 Azure Data Lake 儲存體 Gen2,下游應用程式可以進一步取用以進行資料一致性驗證。
  • 服務會在任何儲存體存放區之間複製二進位檔案時進行檔案大小驗證。

監視

複製活動的輸出

複製活動完全執行之後,您可以從每個複製活動執行的輸出中看到資料一致性驗證的結果:

"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 屬性」 查看資料一致性驗證的詳細資料。

AuthenticationResult 的值:

  • 驗證:已驗證複製的資料在來源和目的地存放區之間保持一致。
  • NotVerified :您的複製資料尚未驗證為一致,因為您尚未在複製活動中啟用 validateDataConsistency。
  • 不支援:您的複製資料尚未驗證為一致,因為此特定複製組不支援資料一致性驗證。

不一致資料 的值:

  • 找到 :複製活動發現資料不一致。
  • 略過 :複製活動已找到並略過不一致的資料。
  • :複製活動找不到任何不一致的資料。 可能是因為您的資料在來源和目的地存放區之間已驗證為一致,或者因為您在複製活動中停用 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 檔案。

記錄檔的架構如下所示:

資料行 描述
時間戳記 服務略過不一致檔案時的時間戳記。
等級 這個專案的記錄層級。 它位於顯示檔案略過之專案的 [警告] 層級。
OperationName 每個檔案上的複製活動作業行為。 指定要略過的檔案是 'FileSkip'。
OperationItem 要略過的檔案名。
訊息 詳細資訊,說明為何要略過檔案。

記錄檔的範例如下:

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 為何變成不一致的詳細資料,是因為當複製活動同時複製時,其他應用程式正在變更它。

請參閱其他複製活動文章: