Přihlášení relace do aktivita Copy
PLATÍ PRO: Azure Data Factory Azure Synapse Analytics
Tip
Vyzkoušejte si službu Data Factory v Microsoft Fabric, řešení pro analýzy typu all-in-one pro podniky. Microsoft Fabric zahrnuje všechno od přesunu dat až po datové vědy, analýzy v reálném čase, business intelligence a vytváření sestav. Přečtěte si, jak začít používat novou zkušební verzi zdarma.
Zkopírované názvy souborů můžete protokolovat v aktivita Copy. To může pomoct zajistit nejen úspěšné kopírování dat ze zdroje do cíle, ale také ověřit konzistenci mezi zdrojem a cílem.
Pokud povolíte nastavení odolnosti proti chybám v aktivita Copy pro přeskočení chybných dat, můžou se protokolovat i přeskočené soubory a přeskočené řádky. Další podrobnosti o odolnosti proti chybám můžete získat v aktivitě kopírování.
Vzhledem k tomu, že máte možnost získat všechny názvy souborů zkopírované službou Azure Data Factory (ADF) aktivita Copy prostřednictvím povolení protokolu relací, bude pro vás užitečné v následujících scénářích:
- Po použití aktivit kopírování ADF ke kopírování souborů z jednoho úložiště do druhého najdete v cílovém úložišti nějaké neočekávané soubory. V protokolech relace aktivita Copy můžete zjistit, která aktivita soubory skutečně zkopírovala a kdy. Díky tomuto přístupu můžete snadno najít původní příčinu a opravit konfigurace v ADF.
- Po použití aktivit kopírování ADF ke kopírování souborů z jednoho úložiště do druhého zjistíte, že soubory zkopírované do cíle nejsou očekávané ze zdrojového úložiště. Můžete zkontrolovat protokoly relace aktivita Copy a získat časové razítko úloh kopírování a metadata souborů, když je aktivity kopírování ADF čtou ze zdrojového úložiště. Pomocí tohoto přístupu můžete ověřit, jestli byly soubory aktualizovány jinými aplikacemi ve zdrojovém úložišti po zkopírování ADF.
Konfigurace pomocí nástroje Azure Data Factory Studio
Pokud chcete nakonfigurovat protokolování aktivita Copy, nejprve do kanálu přidejte aktivita Copy a pak pomocí karty Nastavení nakonfigurujte protokolování a různé možnosti protokolování.
Pokud chcete protokol následně monitorovat, můžete zkontrolovat výstup spuštění kanálu na kartě Monitorování v sadě ADF Studio v rámci spuštění kanálu. Tam vyberte spuštění kanálu, které chcete monitorovat, a pak najeďte myší na oblast vedle názvu aktivity, kde najdete ikony pro odkazy zobrazující vstup kanálu, výstup (po dokončení) a další podrobnosti.
Výběrem ikony výstupu zobrazíte podrobnosti protokolování pro úlohu a poznamenejte si umístění protokolování ve vybraném účtu úložiště, kde můžete zobrazit podrobnosti o všech protokolovaných aktivitách.
Podrobnosti o výstupním formátu protokolu najdete níže.
Konfigurace s využitím JSON
Následující příklad obsahuje definici JSON pro povolení protokolu relace v aktivitě kopírování:
{
"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/"
}
}
}
}
Vlastnost | Popis | Povolené hodnoty | Požaduje se |
---|---|---|---|
enableCopyActivityLog | Když nastavíte hodnotu true, budete mít možnost protokolovat zkopírované soubory, přeskočeny soubory nebo přeskočeny řádky. | True False (výchozí) |
No |
logLevel | Informace budou protokolovat všechny zkopírované soubory, přeskočeny soubory a přeskočeny řádky. "Upozornění" protokoluje přeskočené soubory a přeskočí jenom řádky. | Informace Upozornění (výchozí) |
No |
enableReliableLogging | Pokud je to pravda, aktivita Copy v spolehlivém režimu vyprázdní protokoly okamžitě po zkopírování každého souboru do cíle. Při kopírování mnoha souborů s povoleným spolehlivým režimem protokolování v aktivita Copy byste měli očekávat, že bude ovlivněna propustnost, protože pro každý zkopírovaný soubor jsou vyžadovány operace dvojitého zápisu. Jeden požadavek přejde do cílového úložiště a druhý do úložiště protokolů. Aktivita Copy v režimu nejlepšího úsilí vyprázdní protokoly dávkou záznamů během časového období a propustnost kopírování bude mnohem méně ovlivněná. V tomto režimu není zaručeno úplnost a aktuálnost protokolování, protože existuje několik možností, že poslední dávka událostí protokolu se při selhání aktivita Copy nevyprázdnila do souboru protokolu. V tomto scénáři uvidíte několik souborů zkopírovaných do cíle, které nejsou zaprotokolovány. | True False (výchozí) |
No |
logLocationSettings | Skupina vlastností, které lze použít k určení umístění pro uložení protokolů relace. | No | |
linkedServiceName | Propojená služba Azure Blob Storage nebo Azure Data Lake Storage Gen2 pro ukládání souborů protokolu relací. | Názvy propojených AzureBlobStorage služeb nebo AzureBlobFS typů, které odkazují na instanci, kterou používáte k ukládání souborů protokolu. |
No |
path | Cesta k souborům protokolu. | Zadejte cestu, do které chcete ukládat soubory protokolu. Pokud cestu nezadáte, služba za vás vytvoří kontejner. | No |
Sledování
Výstup z aktivita Copy
Po úplném spuštění aktivity kopírování uvidíte cestu k souborům protokolu z výstupu každého aktivita Copy spuštění. Soubory protokolu najdete v cestě: https://[your-blob-account].blob.core.windows.net/[logFilePath]/copyactivity-logs/[copy-activity-name]/[copy-activity-run-id]/[auto-generated-GUID].txt
. Vygenerované soubory protokolu mají příponu .txt a jejich data jsou ve formátu CSV.
"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"
}
}
Poznámka:
Pokud je vlastnost nastavena enableCopyActivityLog
na Enabled
, názvy souborů protokolu jsou generovány systémem.
Schéma souboru protokolu
Následující tabulka ukazuje schéma souboru protokolu.
Sloupec | Popis |
---|---|
Časové razítko | Časové razítko při čtení, zápisu nebo přeskočení objektu ADF. |
Level | Úroveň protokolu této položky. Může se jednat o upozornění nebo informace. |
OperationName | ADF aktivita Copy provozní chování každého objektu. Může to být FileRead, FileWrite, FileSkip nebo TabularRowSkip. |
OperationItem | Názvy souborů nebo přeskočené řádky. |
Zpráva | Další informace, které se mají zobrazit, pokud byl soubor načten ze zdrojového úložiště nebo zapsán do cílového úložiště. Může to být také důvod, proč se soubor nebo řádky přeskočí. |
Tady je příklad souboru protokolu:
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."
Z výše uvedeného souboru protokolu vidíte, sample1.csv se přeskočil, protože se nepodařilo ověřit, že je konzistentní mezi zdrojovým a cílovým úložištěm. Další podrobnosti o tom, proč se sample1.csv stane nekonzistentním, je to proto, že se změnily jinými aplikacemi, když aktivita Copy ADF kopíruje současně. Můžete také vidět, sample2.csv se úspěšně zkopíroval ze zdroje do cílového úložiště.
K další analýze souborů protokolu můžete použít více analytických modulů. Níže je několik příkladů, jak pomocí dotazu SQL analyzovat soubor protokolu importem souboru csv do databáze SQL, kde název tabulky může být SessionLogDemo.
- Dejte mi zkopírovaný seznam souborů.
select OperationItem from SessionLogDemo where Message like '%File is successfully copied%'
- Dejte mi seznam souborů zkopírovaný v určitém časovém rozsahu.
select OperationItem from SessionLogDemo where TIMESTAMP >= '<start time>' and TIMESTAMP <= '<end time>' and Message like '%File is successfully copied%'
- Dejte mi konkrétní soubor s jeho zkopírovaným časem a metadaty.
select * from SessionLogDemo where OperationItem='<file name>'
- Dejte mi seznam souborů s jejich metadaty zkopírovanými v časovém rozsahu.
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%')
- Dejte mi seznam přeskočených souborů.
select OperationItem from SessionLogDemo where OperationName='FileSkip'
- Uveďte důvod, proč se určitý soubor přeskočil.
select TIMESTAMP, OperationItem, Message from SessionLogDemo where OperationName='FileSkip'
- Seznam souborů se přeskočí kvůli stejnému důvodu: "Soubor objektu blob neexistuje".
select TIMESTAMP, OperationItem, Message from SessionLogDemo where OperationName='FileSkip' and Message like '%UserErrorSourceBlobNotExist%'
- Dejte mi název souboru, který vyžaduje nejdelší dobu kopírování.
select top 1 OperationItem, CopyDuration=DATEDIFF(SECOND, min(TIMESTAMP), max(TIMESTAMP)) from SessionLogDemo group by OperationItem order by CopyDuration desc
Související obsah
Podívejte se na další články o aktivitě kopírování: