Sitzungsprotokoll in einer Copy-Aktivität
GILT FÜR: Azure Data Factory Azure Synapse Analytics
Tipp
Testen Sie Data Factory in Microsoft Fabric, eine All-in-One-Analyselösung für Unternehmen. Microsoft Fabric deckt alle Aufgaben ab, von der Datenverschiebung bis hin zu Data Science, Echtzeitanalysen, Business Intelligence und Berichterstellung. Erfahren Sie, wie Sie kostenlos eine neue Testversion starten!
Sie können die kopierten Dateienamen in einer Copy-Aktivität protokollieren. Dadurch kann nicht nur sichergestellt werden, dass Daten erfolgreich von der Quelle an das Ziel kopiert werden, sondern auch die Konsistenz zwischen Quelle und Ziel überprüft werden.
Wenn Sie die Fehlertoleranzeinstellung in einer Copy-Aktivität aktivieren, um fehlerhafte Daten zu überspringen, können auch die übersprungenen Dateien und die übersprungenen Zeilen protokolliert werden. Weitere Informationen finden Sie unter Fehlertoleranz der Kopieraktivität.
Wenn Sie die Möglichkeit haben, alle von der ADF-Copy-Aktivität (Azure Data Factory) kopierten Dateinamen durch Aktivieren des Sitzungsprotokolls zu erhalten, ist dies in den folgenden Szenarien hilfreich:
- Nachdem Sie die Dateien mithilfe von ADF-Copy-Aktivitäten von einem Speicher in einen anderen Speicher kopiert haben, befinden sich einige unerwartete Dateien im Zielspeicher. Anhand der Sitzungsprotokolle der Copy-Aktivität können Sie ermitteln, wann und von welcher Aktivität die Dateien tatsächlich kopiert wurden. Dadurch können Sie mühelos die Grundursache ermitteln und Ihre Konfigurationen in ADF korrigieren.
- Nachdem Sie die Dateien mithilfe von ADF-Copy-Aktivitäten von einem Speicher in einen anderen Speicher kopiert haben, stellen Sie fest, dass es sich bei den kopierten Dateien am Ziel nicht um erwartete Dateien aus dem Quellspeicher handelt. Anhand der Sitzungsprotokolle der Copy-Aktivität können Sie den Zeitstempel von Kopieraufträgen sowie die Metadaten von Dateien abrufen, wenn sie von ADF-Copy-Aktivitäten aus dem Quellspeicher gelesen werden. Dadurch können Sie überprüfen, ob die Dateien von anderen Anwendungen im Quellspeicher aktualisiert wurden, nachdem sie von ADF kopiert wurden.
Konfiguration mit Azure Data Factory Studio
Um die Protokollierung der Copy-Aktivität konfigurieren zu können, müssen Sie Ihrer Pipeline zunächst eine Copy-Aktivität hinzufügen. Anschließend können Sie die Registerkarte „Einstellungen“ verwenden, um die Protokollierung und verschiedene Protokollierungsoptionen zu konfigurieren.
Für die anschließende Überwachung des Protokolls können Sie die Ausgabe einer Pipelineausführung auf der Registerkarte „Überwachung“ von ADF Studio unter „Pipelineausführungen“ überprüfen. Wählen Sie dort die zu überwachende Pipelineausführung aus, und zeigen Sie dann auf den Bereich neben dem Aktivitätsnamen. Dort finden Sie Symbole für Links zum Anzeigen der Pipelineeingabe, der Ausgabe (nach Abschluss) und anderer Details.
Wählen Sie das Ausgabesymbol aus, um Details zur Protokollierung für den Auftrag anzuzeigen, und beachten Sie den Protokollspeicherort im ausgewählten Speicherkonto. Dort finden Sie Details zu allen protokollierten Aktivitäten.
Details zum Protokollausgabeformat finden Sie weiter unten.
Konfiguration mit JSON
Das folgende Beispiel zeigt eine JSON-Definition, mit der das Sitzungsprotokoll in der Kopieraktivität aktiviert wird:
{
"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/"
}
}
}
}
Eigenschaft | BESCHREIBUNG | Zulässige Werte | Erforderlich |
---|---|---|---|
enableCopyActivityLog | Wenn diese Eigenschaft auf „true“ festgelegt wird, haben Sie die Möglichkeit, kopierte Dateien, übersprungene Dateien oder übersprungene Zeilen zu protokollieren. | True False (Standard) |
Nein |
logLevel | Mit „Info“ werden alle kopierten Dateien, übersprungenen Dateien und übersprungenen Zeilen protokolliert. Mit „Warning“ werden nur übersprungene Dateien und übersprungene Zeilen protokolliert. | Info Warnung (Standardeinstellung) |
Nein |
enableReliableLogging | Wenn diese Eigenschaft auf „true“ festgelegt ist, werden Protokolle bei der Copy-Aktivität im zuverlässigen Modus sofort geleert, nachdem die jeweilige Datei in das Ziel kopiert wurde. Wenn Sie zahlreiche Dateien mit aktiviertem zuverlässigem Protokollierungsmodus in der Copy-Aktivität kopieren, ist mit einer Beeinträchtigung des Durchsatzes zu rechnen, da für jede kopierte Datei doppelte Schreibvorgänge erforderlich sind. Eine Anforderung wird an den Zielspeicher und eine weitere Anforderung an den Protokollspeicher gesendet. Bei einer Copy-Aktivität im Modus für beste Leistung werden Protokolle mit einem Batch von Datensätzen innerhalb eines bestimmten Zeitraums geleert, was den Kopierdurchsatz wesentlich weniger beeinträchtigt. Vollständigkeit und Aktualität der Protokollierung sind in diesem Modus nicht gewährleistet, da es vorkommen kann, dass der letzte Batch von Protokollereignissen nicht in die Protokolldatei geleert wurde, wenn eine Copy-Aktivität nicht erfolgreich war. In diesem Szenario werden einige Dateien, die in das Ziel kopiert wurden, nicht protokolliert. | True False (Standard) |
Nein |
logLocationSettings | Eine Gruppe von Eigenschaften, mit denen der Speicherort für die Sitzungsprotokolle angegeben werden kann. | Nein | |
linkedServiceName | Der verknüpfte Dienst von Azure Blob Storage oder Azure Data Lake Storage Gen2 zum Speichern der Sitzungsprotokolldateien. | Die Namen eines verknüpften Diensts vom Typ AzureBlobStorage oder AzureBlobFS , der auf die Instanz verweist, in der Sie die Protokolldateien speichern. |
Nein |
path | Der Pfad der Protokolldateien. | Geben Sie den Pfad an, in dem die Protokolldateien gespeichert werden sollen. Wenn Sie keinen Pfad angeben, erstellt der Dienst automatisch einen Container. | Nein |
Überwachung
Ausgabe einer Copy-Aktivität
Nach vollständiger Ausführung der Copy-Aktivität wird der Pfad der Protokolldateien in der Ausgabe der jeweiligen Copy-Aktivitätsausführung angezeigt. Sie finden die Protokolldateien im Pfad https://[your-blob-account].blob.core.windows.net/[logFilePath]/copyactivity-logs/[copy-activity-name]/[copy-activity-run-id]/[auto-generated-GUID].txt
. Die generierten Protokolldateien verfügen über die Erweiterung TXT, und ihre Daten weisen das CSV-Format auf.
"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"
}
}
Hinweis
Wenn die Eigenschaft enableCopyActivityLog
auf Enabled
festgelegt ist, werden die Protokolldateinamen vom System generiert.
Schema der Protokolldatei
Die folgende Tabelle zeigt das Schema einer Protokolldatei:
Spalte | BESCHREIBUNG |
---|---|
Timestamp | Der Zeitstempel, wenn ADF das Objekt liest, schreibt oder überspringt. |
Ebene | Die Protokollstufe dieses Elements. Mögliche Optionen sind „Warnung“ und „Info“. |
Vorgangsname | Das Vorgangsverhalten der ADF-Copy-Aktivität für jedes Objekt. Mögliche Optionen sind „FileRead“, „FileWrite“, „FileSkip“ und „TabularRowSkip“. |
OperationItem | Die Dateinamen oder übersprungenen Zeilen. |
`Message` | Weitere Informationen zur Angabe, ob die Datei aus dem Quellspeicher gelesen oder in den Zielspeicher geschrieben wurde. Es kann auch der Grund angegeben sein, warum die Datei oder die Zeilen übersprungen wurden. |
Hier sehen Sie ein Beispiel für eine Protokolldatei:
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 der vorstehenden Protokolldatei können Sie sehen, dass die Datei „sample1.csv“ übersprungen wurde, weil die Konsistenz zwischen Quell- und Zielspeicher nicht überprüft werden konnte. Weitere Details dazu, warum „sample1.csv“ inkonsistent wird: Die Datei wurde von anderen Anwendungen bei gleichzeitiger Ausführung der ADF-Copy-Aktivität geändert. Sie können auch sehen, dass „sample2.csv“ erfolgreich aus dem Quell- in den Zielspeicher kopiert wurde.
Zur weiteren Analyse der Protokolldateien können Sie mehrere Analyse-Engines verwenden. Nachfolgend sehen Sie einige Beispiele für die Verwendung von SQL-Abfragen zum Analysieren der Protokolldatei. Hierbei wird eine CSV-Protokolldatei in SQL-Datenbank importiert, wobei der Tabellenname „SessionLogDemo“ lauten kann.
- Ausgeben der Liste der kopierten Dateien
select OperationItem from SessionLogDemo where Message like '%File is successfully copied%'
- Ausgeben der Liste der kopierten Dateien innerhalb eines bestimmten Zeitraums
select OperationItem from SessionLogDemo where TIMESTAMP >= '<start time>' and TIMESTAMP <= '<end time>' and Message like '%File is successfully copied%'
- Ausgeben einer bestimmten Datei mit zugehöriger Kopierzeit und Metadaten
select * from SessionLogDemo where OperationItem='<file name>'
- Ausgeben einer Liste von Dateien mit deren Metadaten, die innerhalb eines Zeitraums kopiert wurden
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%')
- Ausgeben der Liste der übersprungenen Dateien
select OperationItem from SessionLogDemo where OperationName='FileSkip'
- Ausgeben das Grunds, warum eine bestimmte Datei übersprungen wurde
select TIMESTAMP, OperationItem, Message from SessionLogDemo where OperationName='FileSkip'
- Ausgeben einer Liste der Dateien, die aus dem gleichen Grund übersprungen wurden: „Blobdatei ist nicht vorhanden“
select TIMESTAMP, OperationItem, Message from SessionLogDemo where OperationName='FileSkip' and Message like '%UserErrorSourceBlobNotExist%'
- Ausgeben des Dateinamens, der die längste Zeit zum Kopieren benötigt
select top 1 OperationItem, CopyDuration=DATEDIFF(SECOND, min(TIMESTAMP), max(TIMESTAMP)) from SessionLogDemo group by OperationItem order by CopyDuration desc
Zugehöriger Inhalt
Weitere Informationen finden Sie in den anderen Artikeln zur Kopieraktivität: