Sessielogboek in een Copy-activiteit

VAN TOEPASSING OP: Azure Data Factory Azure Synapse Analytics

U kunt de gekopieerde bestandsnamen registreren in een Copy-activiteit. Dit kan helpen ervoor te zorgen dat gegevens niet alleen van bron naar bestemming worden gekopieerd, maar ook consistentie tussen bron en bestemming valideren.

Wanneer u de instelling voor fouttolerantie in een Copy-activiteit inschakelt om foutieve gegevens over te slaan, kunnen de overgeslagen bestanden en overgeslagen rijen ook worden vastgelegd. U kunt meer informatie krijgen over fouttolerantie in kopieeractiviteit.

Aangezien u de mogelijkheid hebt om alle bestandsnamen te laten kopiëren door Azure Data Factory (ADF) Copy-activiteit via het inschakelen van het sessielogboek, is het handig voor u in de volgende scenario's:

  • Nadat u ADF Copy-activiteiten hebt gebruikt om de bestanden van de ene opslag naar de andere te kopiëren, vindt u een aantal onverwachte bestanden in het doelarchief. U kunt de Copy-activiteit sessielogboeken scannen om te zien welke activiteit de bestanden daadwerkelijk heeft gekopieerd en wanneer. Met deze methode kunt u eenvoudig de hoofdoorzaak vinden en uw configuraties in ADF oplossen.
  • Nadat u ADF Copy-activiteiten hebt gebruikt om de bestanden van de ene opslag naar de andere te kopiëren, vindt u dat de bestanden die naar de bestemming zijn gekopieerd, niet worden verwacht uit het bronarchief. U kunt de Copy-activiteit sessielogboeken scannen om de tijdstempel van kopieertaken en de metagegevens van bestanden op te halen wanneer ADF-kopieeractiviteiten deze lezen uit het bronarchief. Met deze methode kunt u controleren of de bestanden zijn bijgewerkt door andere toepassingen in het bronarchief nadat ze zijn gekopieerd door ADF.

Configuratie met de Azure Data Factory Studio

Als u Copy-activiteit logboekregistratie wilt configureren, voegt u eerst een Copy-activiteit toe aan uw pijplijn en gebruikt u het bijbehorende tabblad Instellingen om logboekregistratie en verschillende opties voor logboekregistratie te configureren. Shows how to configure logging for a Copy activity in the settings tab.

Als u het logboek vervolgens wilt bewaken, kunt u de uitvoer van een pijplijnuitvoering controleren op het tabblad Bewaking van ADF Studio onder pijplijnuitvoeringen. Selecteer daar de pijplijnuitvoering die u wilt controleren en beweeg de muisaanwijzer over het gebied naast de naam van de activiteit, waar u pictogrammen vindt voor koppelingen met de invoer, uitvoer van de pijplijn (zodra deze is voltooid) en andere details.

Shows how to find the output of a Copy activity in ADF Studio.

Selecteer het uitvoerpictogram om details van de logboekregistratie voor de taak weer te geven en noteer de locatie van de logboekregistratie in het geselecteerde opslagaccount, waar u details van alle geregistreerde activiteiten kunt zien.

Shows the output of a Copy activity with logging enabled.

Zie hieronder voor meer informatie over de indeling van de logboekuitvoer.

Configuratie met JSON

In het volgende voorbeeld ziet u een JSON-definitie om sessielogboek in te schakelen in kopieeractiviteit:

"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/"
        }
    }
}
Eigenschap Beschrijving Toegestane waarden Vereist
enableCopyActivityLog Wanneer deze is ingesteld op True, hebt u de mogelijkheid om gekopieerde bestanden te registreren, bestanden overgeslagen of rijen overgeslagen. Waar
False (standaard)
No
Loglevel Met Info worden alle gekopieerde bestanden geregistreerd, bestanden overgeslagen en rijen overgeslagen. Met 'Waarschuwing' worden bestanden overgeslagen en alleen rijen overgeslagen. Info
Waarschuwing (standaard)
No
enableReliableLogging Wanneer dit waar is, wordt in de betrouwbare modus een Copy-activiteit logboeken onmiddellijk leeggemaakt zodra elk bestand naar het doel wordt gekopieerd. Bij het kopiëren van veel bestanden met de betrouwbare logboekregistratiemodus ingeschakeld in de Copy-activiteit, zou u moeten verwachten dat de doorvoer wordt beïnvloed, omdat dubbele schrijfbewerkingen vereist zijn voor elk gekopieerd bestand. Eén aanvraag gaat naar het doelarchief en een andere naar het logboekopslagarchief. Een Copy-activiteit in de modus best effort zal logboeken met batch records binnen een bepaalde periode leegmaken en de kopieerdoorvoer wordt veel minder beïnvloed. De volledigheid en tijdigheid van logboekregistratie wordt niet gegarandeerd in deze modus omdat er enkele mogelijkheden zijn dat de laatste batch logboekgebeurtenissen niet is leeggemaakt in het logboekbestand wanneer een Copy-activiteit mislukt. In dit scenario ziet u een aantal bestanden die naar het doel zijn gekopieerd, niet worden geregistreerd. Waar
False (standaard)
No
logLocationSettings Een groep eigenschappen die kan worden gebruikt om de locatie op te geven voor het opslaan van de sessielogboeken. No
linkedServiceName De gekoppelde service van Azure Blob Storage of Azure Data Lake Storage Gen2 om de sessielogboekbestanden op te slaan. De namen van een AzureBlobStorage gekoppelde service of AzureBlobFS typen, die verwijst naar het exemplaar dat u gebruikt om de logboekbestanden op te slaan. No
leertraject Het pad van de logboekbestanden. Geef het pad op dat u de logboekbestanden wilt opslaan. Als u geen pad opgeeft, maakt de service een container voor u. No

Bewaking

Uitvoer van een Copy-activiteit

Nadat de kopieeractiviteit volledig is uitgevoerd, ziet u het pad van logboekbestanden uit de uitvoer van elke Copy-activiteit uitvoering. U vindt de logboekbestanden op het pad: https://[your-blob-account].blob.core.windows.net/[logFilePath]/copyactivity-logs/[copy-activity-name]/[copy-activity-run-id]/[auto-generated-GUID].txt. De gegenereerde logboekbestanden hebben de .txt-extensie en hun gegevens hebben een CSV-indeling.

"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" 
           } 
        }

Notitie

Wanneer de enableCopyActivityLog eigenschap is ingesteld op Enabled, worden de namen van het logboekbestand door het systeem gegenereerd.

Het schema van het logboekbestand

In de volgende tabel ziet u het schema van een logboekbestand.

Kolom Beschrijving
Tijdstempel De tijdstempel wanneer ADF het object leest, schrijft of overslaat.
Niveau Het logboekniveau van dit item. Dit kan 'Waarschuwing' of 'Info' zijn.
OperationName ADF Copy-activiteit operationeel gedrag voor elk object. Het kan 'FileRead', FileWrite', 'FileSkip' of 'TabularRowSkip' zijn.
OperationItem De bestandsnamen of overgeslagen rijen.
Bericht Meer informatie om weer te geven of het bestand is gelezen uit het bronarchief of naar het doelarchief is geschreven. Het kan ook zijn waarom het bestand of de rijen zijn overgeslagen.

Hier volgt een voorbeeld van een logboekbestand:

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

In het bovenstaande logboekbestand ziet u sample1.csv is overgeslagen omdat het niet kon worden geverifieerd om consistent te zijn tussen bron- en doelarchief. U kunt meer informatie krijgen over waarom sample1.csv inconsistent wordt omdat deze door andere toepassingen werd gewijzigd wanneer ADF Copy-activiteit tegelijkertijd kopieert. U kunt ook zien sample2.csv is gekopieerd van bron naar doelarchief.

U kunt meerdere analyse-engines gebruiken om de logboekbestanden verder te analyseren. Hieronder vindt u enkele voorbeelden om SQL query te gebruiken om het logboekbestand te analyseren door csv-logboekbestand te importeren in SQL database waarin de tabelnaam SessionLogDemo kan zijn.

  • Geef me de lijst met gekopieerde bestanden.
select OperationItem from SessionLogDemo where Message like '%File is successfully copied%'
  • Geef me de lijst met bestanden die binnen een bepaald tijdsbereik zijn gekopieerd.
select OperationItem from SessionLogDemo where TIMESTAMP >= '<start time>' and TIMESTAMP <= '<end time>' and Message like '%File is successfully copied%'
  • Geef me een bepaald bestand met de gekopieerde tijd en metagegevens.
select * from SessionLogDemo where OperationItem='<file name>'
  • Geef me een lijst met bestanden met hun metagegevens die binnen een tijdsbereik zijn gekopieerd.
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%')
  • Geef me de lijst met overgeslagen bestanden.
select OperationItem from SessionLogDemo where OperationName='FileSkip'
  • Geef me de reden waarom een bepaald bestand is overgeslagen.
select TIMESTAMP, OperationItem, Message from SessionLogDemo where OperationName='FileSkip'
  • Geef me de lijst met bestanden die zijn overgeslagen vanwege dezelfde reden: 'blobbestand bestaat niet'.
select TIMESTAMP, OperationItem, Message from SessionLogDemo where OperationName='FileSkip' and Message like '%UserErrorSourceBlobNotExist%'
  • Geef me de bestandsnaam waarvoor de langste tijd nodig is om te kopiëren.
select top 1 OperationItem, CopyDuration=DATEDIFF(SECOND, min(TIMESTAMP), max(TIMESTAMP)) from SessionLogDemo group by OperationItem order by CopyDuration desc

Volgende stappen

Zie de andere artikelen over kopieeractiviteit: