Sessionslogg i en aktiviteten Kopiera
GÄLLER FÖR: Azure Data Factory Azure Synapse Analytics
Tips
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!
Du kan logga dina kopierade filnamn i en aktiviteten Kopiera. Detta kan hjälpa till att säkerställa att data inte bara kopieras från källa till mål, utan även verifiera konsekvens mellan källa och mål.
När du aktiverar feltoleransinställningen i en aktiviteten Kopiera för att hoppa över felaktiga data kan de överhoppade filerna och de överhoppade raderna också loggas. Du kan få mer information från feltolerans i kopieringsaktiviteten.
Eftersom du har möjlighet att hämta alla filnamn som kopieras av Azure Data Factory (ADF) aktiviteten Kopiera via aktivering av sessionsloggen, är det användbart för dig i följande scenarier:
- När du har använt ADF-kopieringsaktiviteter för att kopiera filerna från en lagringsplats till en annan hittar du några oväntade filer i målarkivet. Du kan skanna aktiviteten Kopiera sessionsloggar för att se vilken aktivitet som faktiskt kopierade filerna och när. Med den här metoden kan du enkelt hitta rotorsaken och åtgärda dina konfigurationer i ADF.
- När du har använt ADF-kopieringsaktiviteter för att kopiera filerna från en lagringsplats till en annan, upptäcker du att de filer som kopieras till målet inte förväntas från källarkivet. Du kan genomsöka aktiviteten Kopiera-sessionsloggarna för att hämta tidsstämpeln för kopieringsjobb samt metadata för filer när ADF-kopieringsaktiviteter läser dem från källarkivet. Med den här metoden kan du kontrollera om filerna har uppdaterats av andra program i källarkivet efter att ha kopierats av ADF.
Konfiguration med Azure Data Factory Studio
Om du vill konfigurera aktiviteten Kopiera loggning lägger du först till en aktiviteten Kopiera i din pipeline och använder sedan fliken Inställningar för att konfigurera loggning och olika loggningsalternativ.
Om du vill övervaka loggen kan du kontrollera utdata från en pipelinekörning på fliken Övervakning i ADF Studio under pipelinekörningar. Där väljer du den pipelinekörning som du vill övervaka och hovra sedan över området bredvid aktivitetsnamnet, där du hittar ikoner för länkar som visar pipelineindata, utdata (när det är klart) och annan information.
Välj utdataikonen för att se information om loggningen för jobbet och notera loggningsplatsen i det valda lagringskontot, där du kan se information om alla loggade aktiviteter.
Se nedan för information om loggutdataformatet.
Konfiguration med JSON
I följande exempel finns en JSON-definition för att aktivera sessionslogg i Kopieringsaktivitet:
"typeProperties": {
"source": {
"type": "BinarySource",
"storeSettings": {
"type": "AzureDataLakeStoreReadSettings",
"recursive": true
},
"formatSettings": {
"type": "BinaryReadSettings"
}
},
"sink": {
"type": "BinarySink",
"storeSettings": {
"type": "AzureBlobFSWriteSettings"
}
},
"skipErrorFile": {
"fileForbidden": true,
"dataInconsistency": true
},
"validateDataConsistency": true,
"logSettings": {
"enableCopyActivityLog": true,
"copyActivityLogSettings": {
"logLevel": "Warning",
"enableReliableLogging": false
},
"logLocationSettings": {
"linkedServiceName": {
"referenceName": "ADLSGen2",
"type": "LinkedServiceReference"
},
"path": "sessionlog/"
}
}
}
Egenskap | Beskrivning | Tillåtna värden | Obligatorisk |
---|---|---|---|
enableCopyActivityLog | När värdet är true har du möjlighet att logga kopierade filer, hoppas över filer eller överhoppade rader. | Sant False (standard) |
Inga |
logLevel | "Info" loggar alla kopierade filer, överhoppade filer och överhoppade rader. "Varning" loggar endast överhoppade filer och överhoppade rader. | Information Varning (standard) |
Inga |
enableReliableLogging | När det är sant rensar en aktiviteten Kopiera i tillförlitligt läge loggar direkt när varje fil har kopierats till målet. När du kopierar många filer med tillförlitligt loggningsläge aktiverat i aktiviteten Kopiera bör du förvänta dig att dataflödet påverkas eftersom dubbla skrivåtgärder krävs för varje fil som kopieras. En begäran går till målarkivet och en annan till logglagringsarkivet. En aktiviteten Kopiera i läget för bästa förmåga rensar loggar med batchar med poster inom en viss tidsperiod och kopieringsdataflödet påverkas mycket mindre. Loggningens fullständighet och aktualitet garanteras inte i det här läget eftersom det finns några möjligheter att den sista batchen med logghändelser inte har tömts till loggfilen när en aktiviteten Kopiera misslyckades. I det här scenariot ser du att några filer som kopierats till målet inte loggas. | Sant False (standard) |
Inga |
logLocationSettings | En grupp med egenskaper som kan användas för att ange platsen där sessionsloggarna ska lagras. | 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 länkad tjänst eller AzureBlobFS typer, 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. | Inga |
Övervakning
Utdata från en aktiviteten Kopiera
När kopieringsaktiviteten har körts helt kan du se sökvägen till loggfiler från utdata för varje aktiviteten Kopiera köras. Du hittar loggfilerna från sökvägen: https://[your-blob-account].blob.core.windows.net/[logFilePath]/copyactivity-logs/[copy-activity-name]/[copy-activity-run-id]/[auto-generated-GUID].txt
. Loggfilerna som genereras har tillägget .txt och deras data är i CSV-format.
"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"
}
}
Anteckning
När egenskapen enableCopyActivityLog
är inställd Enabled
på genereras loggfilsnamnen.
Schemat för loggfilen
I följande tabell visas schemat för en loggfil.
Kolumn | Beskrivning |
---|---|
Timestamp | Tidsstämpeln när ADF läser, skriver eller hoppar över objektet. |
Nivå | Loggnivån för det här objektet. Det kan vara "Varning" eller "Info". |
OperationName | ADF aktiviteten Kopiera driftsbeteende för varje objekt. Det kan vara FileRead, FileWrite, FileSkip eller TabularRowSkip. |
OperationItem | Filnamnen eller de överhoppade raderna. |
Meddelande | Mer information som visar om filen har lästs från källarkivet eller skrivits till målarkivet. Det kan också vara anledningen till att filen eller raderna hoppas över. |
Här är ett exempel på en loggfil:
Timestamp, Level, OperationName, OperationItem, Message
2020-10-19 08:39:13.6688152,Info,FileRead,"sample1.csv","Start to read file: {""Path"":""sample1.csv"",""ItemType"":""File"",""Size"":104857620,""LastModified"":""2020-10-19T08:22:31Z"",""ETag"":""\""0x8D874081F80C01A\"""",""ContentMD5"":""dGKVP8BVIy6AoTtKnt+aYQ=="",""ObjectName"":null}"
2020-10-19 08:39: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=,'."
2020-10-19 08:40:13.6688152,Info,FileRead,"sample2.csv","Start to read file: {""Path"":""sample2.csv"",""ItemType"":""File"",""Size"":104857620,""LastModified"":""2020-10-19T08:22:31Z"",""ETag"":""\""0x8D874081F80C01A\"""",""ContentMD5"":""dGKVP8BVIy6AoTtKnt+aYQ=="",""ObjectName"":null}"
2020-10-19 08:40:13.9003981,Info,FileWrite,"sample2.csv","Start to write file from source file: sample2.csv."
2020-10-19 08:45:17.6508407,Info,FileRead,"sample2.csv","Complete reading file successfully. "
2020-10-19 08:45:28.7390083,Info,FileWrite,"sample2.csv","Complete writing file from source file: sample2.csv. File is successfully copied."
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 ADF-aktiviteten Kopiera kopieras samtidigt. Du kan också se sample2.csv har kopierats från källa till målarkiv.
Du kan använda flera analysmotorer för att analysera loggfilerna ytterligare. Det finns några exempel nedan för att använda SQL-fråga för att analysera loggfilen genom att importera csv-loggfilen till SQL-databasen där tabellnamnet kan vara SessionLogDemo.
- Ge mig den kopierade fillistan.
select OperationItem from SessionLogDemo where Message like '%File is successfully copied%'
- Ge mig den fillista som kopierats inom ett visst tidsintervall.
select OperationItem from SessionLogDemo where TIMESTAMP >= '<start time>' and TIMESTAMP <= '<end time>' and Message like '%File is successfully copied%'
- Ge mig en viss fil med dess kopierade tid och metadata.
select * from SessionLogDemo where OperationItem='<file name>'
- Ge mig en lista över filer med deras metadata kopierade inom ett tidsintervall.
select * from SessionLogDemo where OperationName='FileRead' and Message like 'Start to read%' and OperationItem in (select OperationItem from SessionLogDemo where TIMESTAMP >= '<start time>' and TIMESTAMP <= '<end time>' and Message like '%File is successfully copied%')
- Ge mig listan över överhoppade filer.
select OperationItem from SessionLogDemo where OperationName='FileSkip'
- Ge mig anledningen till varför en viss fil hoppades över.
select TIMESTAMP, OperationItem, Message from SessionLogDemo where OperationName='FileSkip'
- Ge mig listan över filer som hoppas över på grund av samma orsak: "blobfilen finns inte".
select TIMESTAMP, OperationItem, Message from SessionLogDemo where OperationName='FileSkip' and Message like '%UserErrorSourceBlobNotExist%'
- Ge mig det filnamn som kräver längst tid att kopiera.
select top 1 OperationItem, CopyDuration=DATEDIFF(SECOND, min(TIMESTAMP), max(TIMESTAMP)) from SessionLogDemo group by OperationItem order by CopyDuration desc
Nästa steg
Se de andra artiklarna om kopieringsaktivitet: