Sessionslogg i en aktiviteten Kopiera

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 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 verifierar 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.

Med tanke på att du har möjlighet att få alla filnamn kopierade av Azure Data Factory (ADF) aktiviteten Kopiera 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 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 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 aktiviteten Kopiera sessionsloggar 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 aktiviteten Kopiera loggning lägger du först till en aktiviteten Kopiera i pipelinen och använder sedan fliken Inställningar för att konfigurera loggning och olika loggningsalternativ. Shows how to configure logging for a Copy activity in the settings tab.

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.

Shows how to find the output of a Copy activity in 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.

Shows the output of a Copy activity with logging enabled.

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 aktiviteten Kopiera 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 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 bästa arbetsläge rensar loggar med en batch 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)
Nej
logLocation Inställningar 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 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 .txt-tillägget 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 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 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."

Från loggfilen ovan kan du se att sample1.csv har hoppats över eftersom det inte kunde verifieras att det var 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 att 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: