Dela via


Sessionslogg i en 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!

Du kan logga dina kopierade filnamn i en kopieringsaktivitet. Detta kan hjälpa till att säkerställa att data inte bara kopieras från källa till mål, utan även verifierar konsekvens mellan källa och mål.

När du aktiverar feltoleransinställningen i en kopieringsaktivitet 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 få alla filnamn kopierade av Azure Data Factory (ADF) Kopieringsaktivitet via aktivering av sessionslogg, ä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 ett lagringsutrymme till ett annat hittar du några oväntade filer i målarkivet. Du kan skanna sessionsloggarna för kopieringsaktivitet 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 ett lagringsutrymme till ett annat, ser du att filerna som kopieras till målet inte förväntas från källarkivet. Du kan skanna sessionsloggarna för kopieringsaktivitet 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 bekräfta 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 loggning av kopieringsaktivitet lägger du först till en kopieringsaktivitet i pipelinen och använder sedan fliken Inställningar för att konfigurera loggning och olika loggningsalternativ. Visar hur du konfigurerar loggning för en kopieringsaktivitet på fliken Inställningar.

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 den är klar) och annan information.

Visar hur du hittar utdata från en kopieringsaktivitet i ADF Studio.

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.

Visar utdata från en kopieringsaktivitet med loggning aktiverat.

Mer information om loggutdataformatet finns nedan.

Konfiguration med JSON

I följande exempel finns en JSON-definition för att aktivera sessionsloggen i Kopieringsaktivitet:

{
  "name": "CopyActivityLog",
  "type": "Copy",
  "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/"
      }
    }
  }
}
Property beskrivning Tillåtna värden Obligatoriskt
enableCopyActivityLog När det är inställt på sant har du möjlighet att logga kopierade filer, överhoppade filer eller överhoppade rader. Sant
False (standard)
Nej
logLevel "Info" loggar alla kopierade filer, överhoppade filer och överhoppade rader. "Varning" loggar endast överhoppade filer och överhoppade rader. Info
Varning (standard)
Nej
enableReliableLogging När det är sant rensar en kopieringsaktivitet i tillförlitligt läge loggarna omedelbart när varje fil kopieras till målet. När du kopierar många filer med tillförlitligt loggningsläge aktiverat i kopieringsaktiviteten 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 kopieringsaktivitet i bästa arbetsläge rensar loggar med batch med poster inom en 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 kopieringsaktivitet misslyckades. I det här scenariot ser du att några filer som kopierats till målet inte loggas. Sant
False (standard)
Nej
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 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

Övervakning

Utdata från en kopieringsaktivitet

När kopieringsaktiviteten har körts helt kan du se sökvägen till loggfiler från utdata från varje kopieringsaktivitetskörning. 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" 
           } 
        }

Kommentar

När egenskapen enableCopyActivityLog är inställd på Enabledgenereras loggfilnamnen system.

Schemat för loggfilen

I följande tabell visas schemat för en loggfil.

Kolumn beskrivning
Tidsstämpel 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 Driftsbeteende för ADF-kopieringsaktivitet för varje objekt. Det kan vara "FileRead", FileWrite, FileSkip eller TabularRowSkip.
OperationItem Filnamnen eller de överhoppade raderna.
Meddelande Mer information för att visa 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-kopieringsaktiviteten 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 den överhoppade fillistan.
select OperationItem from SessionLogDemo where OperationName='FileSkip'
  • Ge mig anledningen till att 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: "blobfil 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

Se de andra artiklarna om kopieringsaktivitet: