Přihlášení relace do aktivita Copy

VZTAHUJE SE NA: Azure Data Factory Azure Synapse Analytics

Tip

Data Factory v Microsoft Fabric je nová generace Azure Data Factory s jednodušší architekturou, integrovanou AI a novými funkcemi. Pokud s integrací dat začínáte, začněte Fabric Data Factory. Stávající úlohy ADF lze upgradovat na Fabric pro přístup k novým funkcím v oblastech datové vědy, analýz v reálném čase a vytváření sestav.

Můžete protokolovat názvy zkopírovaných souborů pomocí aktivity Kopírování. 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.

Když v aktivita Copy povolíte nastavení odolnosti proti chybám, můžete vynechané soubory a přeskočené řádky také protokolovat. Další podrobnosti o odolnosti proti chybám můžete získat v aktivitě kopírování.

Pokud máte možnost získat všechny názvy souborů zkopírované aktivitou kopírování Azure Data Factory (ADF) povolením záznamu relace, bude to 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 časy úloh kopírování a metadata souborů, když aktivity kopírování ADF čtou soubory 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 potom pomocí karty Nastavení nakonfigurujte protokolování a různé možnosti protokolování. Ukazuje, jak nakonfigurovat protokolování pro aktivita Copy na kartě nastavení.

Pokud chcete protokol následně monitorovat, můžete zkontrolovat výstup spuštění kanálu na záložce Monitorování v ADF Studio. 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.

Ukazuje, jak najít výstup kopírovací aktivity v ADF Studiu.

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.

Zobrazuje výstup aktivita Copy s povoleným protokolováním.

Podrobnosti o výstupním formátu protokolu najdete níže.

Konfigurace s využitím JSON

Následující ukázka poskytuje definici JSON pro povolení protokolu relace v Copy Activity:

{
  "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
povolitKopírováníAktivityLogu Když nastavíte tuto možnost na hodnotu true, budete mít možnost protokolovat zkopírované soubory, přeskočené soubory nebo přeskočené řádky. Pravda
False (výchozí)
Ne
logLevel "Log bude zaznamenávat všechny zkopírované soubory, přeskočené soubory a přeskočené řádky." "Upozornění" zaznamená pouze přeskočené soubory a přeskočené řádky. Informace
Upozornění (výchozí)
Ne
povolitSpolehlivéLogování 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 nebyla vyprázdněna do souboru protokolu, když došlo k selhání aktivita Copy. V tomto scénáři uvidíte několik souborů zkopírovaných do cíle, které nejsou zaprotokolovány. Pravda
False (výchozí)
Ne
logLocationSettings Skupina vlastností, které lze použít k určení umístění pro uložení protokolů relace. Ne
názevPrepojenéSlužby Propojená služba Azure Blob Storage nebo Azure Data Lake Storage Gen2 pro ukládání souborů protokolu relace. Názvy služeb propojených typů AzureBlobStorage nebo AzureBlobFS, které odkazují na instanci, kterou používáte k ukládání souborů protokolu. Ne
cesta 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. Ne

Sledování

Výstup z aktivita Copy

Po úplném dokončení kopírovací aktivity uvidíte cestu k souborům protokolu z výstupu každého spuštění kopírovací aktivity. 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, kdy ADF čte, zapisuje nebo přeskočí objekt.
Úroveň Úroveň protokolu této položky. Může se jednat o upozornění nebo informace.
OperationName Provozní chování aktivity kopírování ADF na každém objektu. Může to být FileRead, FileWrite, FileSkip nebo TabularRowSkip.
OperationItem Názvy souborů a vynechané řá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, že soubor sample1.csv byl přeskočen, 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 stává nekonzistentním, jsou proto, že je měněn jinými aplikacemi, zatímco aktivita Copy ADF současně kopíruje. 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č byl určitý soubor přeskočen.
select TIMESTAMP, OperationItem, Message from SessionLogDemo where OperationName='FileSkip'
  • Dejte mi seznam souborů přeskočených ze stejného důvodu: "Blobový soubor 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

Podívejte se na další články o aktivitě kopírování: