Verifiering av datakonsekvens i kopieringsaktivitet
GÄLLER FÖR: Azure Data Factory Azure Synapse Analytics
Dricks
Prova Data Factory i Microsoft Fabric, en allt-i-ett-analyslösning för företag. Microsoft Fabric omfattar allt från dataflytt till datavetenskap, realtidsanalys, business intelligence och rapportering. Lär dig hur du startar en ny utvärderingsversion kostnadsfritt!
När du flyttar data från källa till mållager ger kopieringsaktiviteten ett alternativ där du kan utföra ytterligare verifiering av datakonsekvens för att säkerställa att data inte bara kopieras från källa till mållager, utan även verifieras vara konsekventa mellan käll- och målarkivet. När inkonsekventa filer har hittats under dataflytten kan du antingen avbryta kopieringsaktiviteten eller fortsätta kopiera resten genom att aktivera feltoleransinställningen för att hoppa över inkonsekventa filer. Du kan hämta de överhoppade filnamnen genom att aktivera sessionslogginställningen i kopieringsaktiviteten. Mer information finns i sessionsloggen i kopieringsaktiviteten .
Datalager och scenarier som stöds
- Verifiering av datakonsekvens stöds av alla anslutningsappar förutom FTP, SFTP, HTTP, Snowflake, Office 365 och Azure Databricks Delta Lake.
- Datakonsekvensverifiering stöds inte i scenariot med mellanlagringskopiering.
- Vid kopiering av binära filer är datakonsekvensverifiering endast tillgängligt när beteendet PreserveHierarchy anges i kopieringsaktiviteten.
- När du kopierar flera binära filer i enstaka kopieringsaktivitet med datakonsekvensverifiering aktiverat kan du antingen avbryta kopieringsaktiviteten eller fortsätta att kopiera resten genom att aktivera feltoleransinställningen för att hoppa över inkonsekventa filer.
- När du kopierar en tabell i enstaka kopieringsaktivitet med verifiering av datakonsekvens aktiverad misslyckas kopieringsaktiviteten om antalet rader som lästs från källan skiljer sig från antalet rader som kopierats till målet plus antalet inkompatibla rader som hoppades över.
Konfiguration
I följande exempel finns en JSON-definition för att aktivera verifiering av datakonsekvens i Kopieringsaktivitet:
{
"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/"
}
}
}
Property | beskrivning | Tillåtna värden | Obligatoriskt |
---|---|---|---|
validateDataConsistency | Om du anger true för den här egenskapen kontrollerar kopieringsaktiviteten filstorlek, lastModifiedDate och MD5 för varje binär fil som kopieras från källa till mållager för att säkerställa datakonsekvensen mellan käll- och målarkivet. När du kopierar tabelldata kontrollerar kopieringsaktiviteten det totala antalet rader när jobbet har slutförts, vilket säkerställer att det totala antalet rader som lästs från källan är detsamma som antalet rader som kopierades till målet plus antalet inkompatibla rader som hoppades över. Tänk på att kopieringsprestandan påverkas genom att aktivera det här alternativet. | Sant False (standard) |
Nej |
dataInkonsekvens | Ett av nyckel/värde-paren i skipErrorFile-egenskapspåsen för att avgöra om du vill hoppa över de inkonsekventa filerna. -Sant: du vill kopiera resten genom att hoppa över inkonsekventa filer. - Falskt: du vill avbryta kopieringsaktiviteten när inkonsekvent fil hittades. Tänk på att den här egenskapen endast är giltig när du kopierar binära filer och anger validateDataConsistency som True. |
Sant False (standard) |
Nej |
logSettings | En grupp med egenskaper som kan anges för att aktivera sessionslogg för att logga överhoppade filer. | Nej | |
linkedServiceName | Den länkade tjänsten för Azure Blob Storage eller Azure Data Lake Storage Gen2 för att lagra sessionsloggfilerna. | Namnen på en AzureBlobStorage eller AzureBlobFS flera typer av länkade tjänster, som refererar till den instans som du använder för att lagra loggfilerna. |
Nej |
path | Sökvägen till loggfilerna. | Ange den sökväg som du vill lagra loggfilerna. Om du inte anger någon sökväg skapar tjänsten en container åt dig. | Nej |
Kommentar
- När du kopierar binära filer från eller till Azure Blob eller Azure Data Lake Storage Gen2 blockerar tjänsten MD5-kontrollsummaverifiering på nivå MD5 med hjälp av Azure Blob API och Azure Data Lake Storage Gen2 API. Om ContentMD5 på filer finns i Azure Blob eller Azure Data Lake Storage Gen2 som datakällor, utför tjänsten md5-kontrollsummaverifiering på filnivå efter att även ha läst filerna. När du har kopierat filer till Azure Blob eller Azure Data Lake Storage Gen2 som datamål skriver tjänsten ContentMD5 till Azure Blob eller Azure Data Lake Storage Gen2 som kan användas ytterligare av underordnade program för verifiering av datakonsekvens.
- Tjänsten utför verifiering av filstorlek vid kopiering av binära filer mellan lagringslager.
Övervakning
Utdata från kopieringsaktivitet
När kopieringsaktiviteten har körts helt kan du se resultatet av datakonsekvensverifiering från utdata från varje kopieringsaktivitetskörning:
"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"
}
}
Du kan se information om verifiering av datakonsekvens från egenskapen "dataConsistencyVerification".
Värdet för VerificationResult:
- Verifierad: Dina kopierade data har verifierats vara konsekventa mellan käll- och målarkivet.
- NotVerified: Dina kopierade data har inte verifierats vara konsekventa eftersom du inte har aktiverat validDataConsistency i kopieringsaktiviteten.
- Stöds inte: Dina kopierade data har inte verifierats vara konsekventa eftersom verifiering av datakonsekvens inte stöds för just det här kopieringsparet.
Värdet för InkonsekventData:
- Hittades: Kopieringsaktiviteten har hittat inkonsekventa data.
- Överhoppad: Kopieringsaktiviteten har hittat och hoppat över inkonsekventa data.
- Ingen: Kopieringsaktiviteten har inte hittat några inkonsekventa data. Det kan bero på att dina data har verifierats vara konsekventa mellan käll- och målarkivet eller på att du har inaktiverat validateDataConsistency i kopieringsaktiviteten.
Sessionslogg från kopieringsaktivitet
Om du konfigurerar för att logga den inkonsekventa filen kan du hitta loggfilen från den här sökvägen: https://[your-blob-account].blob.core.windows.net/[path-if-configured]/copyactivity-logs/[copy-activity-name]/[copy-activity-run-id]/[auto-generated-GUID].csv
. Loggfilerna är csv-filerna.
Schemat för en loggfil är följande:
Kolumn | beskrivning |
---|---|
Tidsstämpel | Tidsstämpeln när tjänsten hoppar över de inkonsekventa filerna. |
Nivå | Loggnivån för det här objektet. Det är på varningsnivån för objektet som visar filhoppning. |
OperationName | Driftsbeteendet för kopieringsaktiviteten för varje fil. Det är "FileSkip" för att ange vilken fil som ska hoppas över. |
OperationItem | Filnamnet som ska hoppas över. |
Meddelande | Mer information för att illustrera varför filer hoppas över. |
Exemplet på en loggfil är följande:
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=,'."
I loggfilen ovan kan du se sample1.csv har hoppats över eftersom den inte kunde verifieras vara konsekvent mellan käll- och målarkivet. Du kan få mer information om varför sample1.csv blir inkonsekvent beror på att det ändrades av andra program när kopieringsaktiviteten kopieras samtidigt.
Relaterat innehåll
Se de andra artiklarna om kopieringsaktivitet: