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

Ukazuje, jak najít výstup aktivita Copy 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í 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

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