A másolási tevékenység hibatűrése az Azure Data Factoryben és a Synapse Analytics-folyamatokban

A következőkre vonatkozik: Azure Data Factory Azure Synapse Analytics

Tipp.

Próbálja ki a Data Factoryt a Microsoft Fabricben, amely egy teljes körű elemzési megoldás a nagyvállalatok számára. A Microsoft Fabric az adattovábbítástól az adatelemzésig, a valós idejű elemzésig, az üzleti intelligenciáig és a jelentéskészítésig mindent lefed. Ismerje meg, hogyan indíthat új próbaverziót ingyenesen!

Amikor adatokat másol a forrásból a céltárolóba, a másolási tevékenység bizonyos szintű hibatűréseket biztosít az adatáthelyezés közben fellépő hibák megszakításának megakadályozása érdekében. Például több millió sort másol a forrásból a céltárolóba, ahol egy elsődleges kulcs lett létrehozva a céladatbázisban, de a forrásadatbázisban nincs meghatározva elsődleges kulcs. Amikor ismétlődő sorokat másol a forrásból a célhelyre, a céladatbázis PK-szabálysértési hibáját fogja észlelni. Jelenleg a másolási tevékenység kétféle módon kezeli az ilyen hibákat:

  • Ha hiba történt, megszakíthatja a másolási tevékenységet.
  • A többit továbbra is másolhatja úgy, hogy engedélyezi a hibatűrést a nem kompatibilis adatok kihagyásához. Ebben az esetben például hagyja ki a duplikált sort. Emellett a kihagyott adatokat naplózhatja úgy is, hogy engedélyezi a munkamenetnaplót a másolási tevékenységen belül. További részletekért tekintse meg a munkamenet-napló másolási tevékenységeit .

Bináris fájlok másolása

A szolgáltatás a bináris fájlok másolása során az alábbi hibatűrési forgatókönyveket támogatja. Dönthet úgy, hogy megszakítja a másolási tevékenységet, vagy folytatja a másolást a következő forgatókönyvekben:

  1. A szolgáltatás által másolandó fájlokat más alkalmazások egyszerre törlik.
  2. Egyes mappák vagy fájlok nem teszik lehetővé a szolgáltatás elérését, mert ezen fájlok vagy mappák ACL-jai magasabb engedélyszintet igényelnek, mint a konfigurált kapcsolati adatok.
  3. Egy vagy több fájl nem lesz konzisztens a forrás- és céltároló között, ha engedélyezi az adatkonzisztencia-ellenőrzési beállítást.

Hibatűrés engedélyezése felhasználói felületen

Ha felhasználói felülettel rendelkező folyamat Copy tevékenység hibatűrését szeretné konfigurálni, hajtsa végre a következő lépéseket:

  1. Ha még nem hozott létre Copy tevékenység a folyamathoz, keressen rá a Másolás gombra a folyamat tevékenységei panelen, és húzza az adatmásolási tevékenységet a folyamatvászonra.

  2. A hibatűrés konfigurálásához válassza ki az új adatmásolási tevékenységet a vásznon, ha még nincs kijelölve, és a Gépház lapon.

    Shows the UI for a Copy Data activity on the Settings tab with the Fault Tolerance configuration highlighted.

Konfiguráció

Bináris fájlok tárolók közötti másolása esetén az alábbiak szerint engedélyezheti a hibatűrést:

{
  "name": "CopyActivityFaultTolerance",
  "type": "Copy",
  "typeProperties": {
    "source": {
      "type": "BinarySource",
      "storeSettings": {
        "type": "AzureDataLakeStoreReadSettings",
        "recursive": true
      }
    },
    "sink": {
      "type": "BinarySink",
      "storeSettings": {
        "type": "AzureDataLakeStoreWriteSettings"
      }
    },
    "skipErrorFile": {
      "fileMissing": true,
      "fileForbidden": true,
      "dataInconsistency": true,
      "invalidFileName": true
    },
    "validateDataConsistency": true,
    "logSettings": {
      "enableCopyActivityLog": true,
      "copyActivityLogSettings": {
        "logLevel": "Warning",
        "enableReliableLogging": false
      },
      "logLocationSettings": {
        "linkedServiceName": {
          "referenceName": "ADLSGen2",
          "type": "LinkedServiceReference"
        },
        "path": "sessionlog/"
      }
    }
  }
}
Property Leírás Megengedett értékek Szükséges
skipErrorFile Tulajdonságok csoportja, amely megadja az adatáthelyezés során kihagyni kívánt hibák típusait. Nem
fileMissing A skipErrorFile tulajdonságcsomagban található kulcs-érték párok egyike határozza meg, hogy ki szeretné-e hagyni a más alkalmazások által a másolási művelet végrehajtásakor törölt fájlokat.
-Igaz: a többit úgy szeretné másolni, hogy kihagyja a más alkalmazások által törölt fájlokat.
- Hamis: megszakítja a másolási tevékenységet, miután az adatáthelyezés közepén a forrástárból törölték a fájlokat.
Vegye figyelembe, hogy ez a tulajdonság alapértelmezés szerint igaz értékre van állítva.
Igaz(alapértelmezett)
Hamis
Nem
fileForbidden A skipErrorFile tulajdonságcsomagban található kulcs-érték párok egyike határozza meg, hogy ki szeretné-e hagyni az adott fájlokat, amikor a fájlok vagy mappák ACL-jei magasabb engedélyszintet igényelnek, mint a konfigurált kapcsolat.
-Igaz: a többit a fájlok kihagyásával szeretné másolni.
- Hamis: megszakítja a másolási tevékenységet, miután megkapta az engedélyproblémát a mappákon vagy fájlokon.
Igaz
Hamis(alapértelmezett)
Nem
dataInconsistency Az egyik kulcs-érték pár a skipErrorFile tulajdonságcsomagban annak megállapításához, hogy ki szeretné-e hagyni a forrás- és céltároló közötti inkonzisztens adatokat.
-Igaz: a többit az inkonzisztens adatok kihagyásával szeretné másolni.
- Hamis: megszakítja a másolási tevékenységet, ha az inkonzisztens adatok találhatók.
Ne feledje, hogy ez a tulajdonság csak akkor érvényes, ha igaz értékként állítja be a validateDataConsistency értéket.
Igaz
Hamis(alapértelmezett)
Nem
invalidFileName Az egyik kulcs-érték pár a skipErrorFile tulajdonságcsomagban annak megállapításához, hogy ki szeretné-e hagyni az adott fájlokat, ha a fájlnevek érvénytelenek a céltárolóban.
-Igaz: a többit úgy szeretné másolni, hogy kihagyja az érvénytelen fájlneveket tartalmazó fájlokat.
- Hamis: megszakítja a másolási tevékenységet, ha bármelyik fájl neve érvénytelen.
Vegye figyelembe, hogy ez a tulajdonság akkor működik, ha bináris fájlokat másol bármely tárolóból az ADLS Gen2-be, vagy bináris fájlokat másol az AWS S3-ból bármely tárolótárolóba.
Igaz
Hamis(alapértelmezett)
Nem
napló Gépház A kihagyott objektumnevek naplózásakor megadható tulajdonságok csoportja.   Nem
linkedServiceName Az Azure Blob Storage vagy az Azure Data Lake Storage Gen2 társított szolgáltatása a munkamenet-naplófájlok tárolásához. Egy csatolt szolgáltatás neve AzureBlobStorage vagy AzureBlobFS típusa, amely a naplófájl tárolására használt példányra hivatkozik. Nem
ösvény A naplófájlok elérési útja. Adja meg a naplófájlok tárolásához használt elérési utat. Ha nem ad meg elérési utat, a szolgáltatás létrehoz egy tárolót. Nem

Megjegyzés:

A bináris fájlok másolása során a következő előfeltételek szükségesek a másolási tevékenység hibatűrésének engedélyezéséhez. Bizonyos fájlok kihagyása a forrástárból való törléskor:

  • A forrásadatkészletnek és a fogadó adatkészletnek bináris formátumúnak kell lennie, és a tömörítési típus nem adható meg.
  • A támogatott adattártípusok: Azure Blob Storage, Azure Data Lake Storage Gen1, Azure Data Lake Storage Gen2, Azure Files, Fájlrendszer, FTP, SFTP, Amazon S3, Google Cloud Storage és HDFS.
  • Csak akkor, ha több fájlt ad meg a forrásadatkészletben, amely lehet mappa, helyettesítő karakter vagy fájllista, a másolási tevékenység kihagyhatja az adott hibafájlokat. Ha egyetlen fájl van megadva a forrásadatkészletben, amelyet a célhelyre szeretne másolni, a másolási tevékenység hiba esetén meghiúsul.

Bizonyos fájlok kihagyása esetén, ha a hozzáférésük tiltott a forrástárból:

  • A forrásadatkészletnek és a fogadó adatkészletnek bináris formátumúnak kell lennie, és a tömörítési típus nem adható meg.
  • A támogatott adattártípusok az Azure Blob Storage, az Azure Data Lake Storage Gen1, az Azure Data Lake Storage Gen2, az Azure Files, az SFTP, az Amazon S3 és a HDFS.
  • Csak akkor, ha több fájlt ad meg a forrásadatkészletben, amely lehet mappa, helyettesítő karakter vagy fájllista, a másolási tevékenység kihagyhatja az adott hibafájlokat. Ha egyetlen fájl van megadva a forrásadatkészletben, amelyet a célhelyre szeretne másolni, a másolási tevékenység hiba esetén meghiúsul.

Ha bizonyos fájlokat kihagy, ha meggyőződik arról, hogy nem inkonzisztensek a forrás- és a céltároló között:

  • Az adatkonzisztencia-dokumentumból itt talál további részleteket.

Figyelés

Másolási tevékenység kimenete

Az egyes másolási tevékenységfuttatások kimenetén keresztül lekérheti az olvasandó, írott és kihagyott fájlok számát.

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

Munkamenetnapló másolási tevékenységből

Ha úgy van konfigurálva, hogy naplózza a kihagyott fájlneveket, a naplófájl az alábbi elérési úton található: https://[your-blob-account].blob.core.windows.net/[path-if-configured]/copyactivity-logs/[copy-activity-name]/[copy-activity-run-id]/[auto-generated-GUID].csv.

A naplófájloknak csv-fájloknak kell lenniük. A naplófájl sémája a következő:

Column Leírás
Timestamp A fájl kihagyásakor megadott időbélyeg.
Szint Az elem naplószintje. A fájl kihagyását mutató elem "Figyelmeztetés" szintjén jelenik meg.
OperationName Copy tevékenység minden fájl működési viselkedését. A kihagyni kívánt fájl megadása a "FileSkip" lesz.
OperationItem A kihagyandó fájlnevek.
Üzenet További információ a kihagyott fájl okáról.

Egy naplófájl például a következő:

Timestamp,Level,OperationName,OperationItem,Message 
2020-03-24 05:35:41.0209942,Warning,FileSkip,"bigfile.csv","File is skipped after read 322961408 bytes: ErrorCode=UserErrorSourceBlobNotExist,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=The required Blob is missing. ContainerName: https://transferserviceonebox.blob.core.windows.net/skipfaultyfile, path: bigfile.csv.,Source=Microsoft.DataTransfer.ClientLibrary,'." 
2020-03-24 05:38:41.2595989,Warning,FileSkip,"3_nopermission.txt","File is skipped after read 0 bytes: ErrorCode=AdlsGen2OperationFailed,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=ADLS Gen2 operation failed for: Operation returned an invalid status code 'Forbidden'. Account: 'adlsgen2perfsource'. FileSystem: 'skipfaultyfilesforbidden'. Path: '3_nopermission.txt'. ErrorCode: 'AuthorizationPermissionMismatch'. Message: 'This request is not authorized to perform this operation using this permission.'. RequestId: '35089f5d-101f-008c-489e-01cce4000000'..,Source=Microsoft.DataTransfer.ClientLibrary,''Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Operation returned an invalid status code 'Forbidden',Source=,''Type=Microsoft.Azure.Storage.Data.Models.ErrorSchemaException,Message='Type=Microsoft.Azure.Storage.Data.Models.ErrorSchemaException,Message=Operation returned an invalid status code 'Forbidden',Source=Microsoft.DataTransfer.ClientLibrary,',Source=Microsoft.DataTransfer.ClientLibrary,'." 

A fenti naplóból láthatja, hogy a bigfile.csv ki lett hagyva, mert egy másik alkalmazás törölte ezt a fájlt a szolgáltatás másolásakor. A 3_nopermission.txt fájl pedig ki lett hagyva, mert a szolgáltatás engedélyproblémák miatt nem férhet hozzá.

Táblázatos adatok másolása

Támogatott esetek

Copy tevékenység három forgatókönyvet támogat a nem kompatibilis táblázatos adatok észlelésére, kihagyására és naplózására:

  • Inkompatibilitás a forrásadattípus és a fogadó natív típusa között.

    Például: Adatok másolása a Blob Storage egyik CSV-fájljából egy olyan SQL-adatbázisba, amely három INT típusú oszlopot tartalmazó sémadefinícióval rendelkezik. A numerikus adatokat ( például 123 456 789) tartalmazó CSV-fájlsorokat a rendszer sikeresen átmásolja a fogadótárba. A nem numerikus értékeket (például 123 456, abc) tartalmazó sorok azonban nem kompatibilisek, és kihagyhatók.

  • Eltérés a forrás és a fogadó közötti oszlopok számában.

    Például: Adatok másolása a Blob Storage-ban lévő CSV-fájlból egy hat oszlopot tartalmazó sémadefinícióval rendelkező SQL-adatbázisba. A hat oszlopot tartalmazó CSV-fájlsorokat a rendszer sikeresen átmásolja a fogadótárba. A hatnál több oszlopot tartalmazó CSV-fájlsorok nem kompatibilisek, és a rendszer kihagyja.

  • Elsődleges kulcs megsértése az SQL Serverbe/Azure SQL Database-be/Azure Cosmos DB-be való íráskor.

    Például: Adatok másolása SQL-kiszolgálóról SQL-adatbázisba. Az elsődleges kulcs a fogadó SQL-adatbázisban van definiálva, de a forrás SQL-kiszolgálón nincs ilyen elsődleges kulcs definiálva. A forrásban található duplikált sorok nem másolhatók át a fogadóba. Copy tevékenység csak a forrásadatok első sorát másolja a fogadóba. A rendszer a duplikált elsődleges kulcs értékét tartalmazó forrássorokat nem kompatibilisként észleli, és kihagyja.

Megjegyzés:

  • Ha adatokat szeretne betölteni az Azure Synapse Analyticsbe a PolyBase használatával, konfigurálja a PolyBase natív hibatűrési beállításait úgy, hogy a másolási tevékenységben a "polyBase Gépház" használatával elutasító szabályzatokat ad meg. Továbbra is engedélyezheti a PolyBase inkompatibilis sorok blobra vagy ADLS-be való átirányítását az alább látható módon.
  • Ez a funkció nem érvényes, ha a másolási tevékenység az Amazon Redshift-eltávolítás meghívására van konfigurálva.
  • Ez a funkció nem érvényes, ha a másolási tevékenység úgy van konfigurálva, hogy tárolt eljárást hívjon meg egy SQL-fogadóból, vagy az Upsert használatával adatokat írjon egy SQL-fogadóba.

Konfiguráció

Az alábbi példa egy JSON-definíciót biztosít a másolási tevékenység inkompatibilis sorainak kihagyásának konfigurálásához:

"typeProperties": { 
    "source": { 
        "type": "AzureSqlSource" 
    }, 
    "sink": { 
        "type": "AzureSqlSink" 
    }, 
    "enableSkipIncompatibleRow": true, 
    "logSettings": {
        "enableCopyActivityLog": true,
        "copyActivityLogSettings": {            
            "logLevel": "Warning",
            "enableReliableLogging": false
        },
        "logLocationSettings": {
            "linkedServiceName": {
               "referenceName": "ADLSGen2",
               "type": "LinkedServiceReference"
            },
            "path": "sessionlog/"
        }
    } 
}, 
Property Leírás Megengedett értékek Szükséges
enableSkipIncompatibleRow Megadja, hogy kihagyja-e az inkompatibilis sorokat a másolás során. Igaz
False (alapértelmezett)
Nem
napló Gépház A nem kompatibilis sorok naplózásakor megadható tulajdonságok csoportja.   Nem
linkedServiceName Az Azure Blob Storage vagy az Azure Data Lake Storage Gen2 társított szolgáltatása a kihagyott sorokat tartalmazó napló tárolására. Egy csatolt szolgáltatás neve AzureBlobStorage vagy AzureBlobFS típusa, amely a naplófájl tárolására használt példányra hivatkozik. Nem
ösvény A kihagyott sorokat tartalmazó naplófájlok elérési útja. Adja meg a nem kompatibilis adatok naplózásához használni kívánt elérési utat. Ha nem ad meg elérési utat, a szolgáltatás létrehoz egy tárolót. Nem

Kihagyott sorok figyelése

A másolási tevékenység futtatása után a másolási tevékenység kimenetében láthatja a kihagyott sorok számát:

"output": {
            "dataRead": 95,
            "dataWritten": 186,
            "rowsCopied": 9,
            "rowsSkipped": 2,
            "copyDuration": 16,
            "throughput": 0.01,
            "logFilePath": "myfolder/a84bf8d4-233f-4216-8cb5-45962831cd1b/",
            "errors": []
        },

Ha konfigurálja a nem kompatibilis sorok naplózását, a naplófájl az alábbi elérési útból található: https://[your-blob-account].blob.core.windows.net/[path-if-configured]/copyactivity-logs/[copy-activity-name]/[copy-activity-run-id]/[auto-generated-GUID].csv.

A naplófájlok a csv-fájlok lesznek. A naplófájl sémája a következő:

Column Leírás
Timestamp Az időbélyeg, amikor a nem kompatibilis sorok kimaradtak
Szint Az elem naplószintje. "Figyelmeztetés" szinten jelenik meg, ha ez az elem a kihagyott sorokat jeleníti meg
OperationName Copy tevékenység működési viselkedést minden sorban. A "TabularRowSkip" lesz annak megadása, hogy az adott inkompatibilis sor ki lett-e hagyva
OperationItem A forrásadattár kihagyott sorai.
Üzenet További információ az adott sor inkompatibilitásának okairól.

A naplófájl tartalmának egy példája a következő:

Timestamp, Level, OperationName, OperationItem, Message
2020-02-26 06:22:32.2586581, Warning, TabularRowSkip, """data1"", ""data2"", ""data3""," "Column 'Prop_2' contains an invalid value 'data3'. Cannot convert 'data3' to type 'DateTime'." 
2020-02-26 06:22:33.2586351, Warning, TabularRowSkip, """data4"", ""data5"", ""data6"",", "Violation of PRIMARY KEY constraint 'PK_tblintstrdatetimewithpk'. Cannot insert duplicate key in object 'dbo.tblintstrdatetimewithpk'. The duplicate key value is (data4)." 

A fenti minta naplófájlból egy sor "data1, data2, data3" lett kihagyva a típuskonvertálási probléma miatt a forrásból a céltárolóba. Egy másik "data4, data5, data6" sor kimaradt a forrásból a céltárolóba történő PK-szabálysértési probléma miatt.

Táblázatos adatok másolása (örökölt):

Az alábbi módszer a csak táblázatos adatok másolásának hibatűrését lehetővé tevő régi módszer. Ha új folyamatot vagy tevékenységet hoz létre, érdemes innen kezdenie.

Konfiguráció

Az alábbi példa egy JSON-definíciót biztosít a másolási tevékenység inkompatibilis sorainak kihagyásának konfigurálásához:

"typeProperties": {
    "source": {
        "type": "BlobSource"
    },
    "sink": {
        "type": "SqlSink",
    },
    "enableSkipIncompatibleRow": true,
    "redirectIncompatibleRowSettings": {
         "linkedServiceName": {
              "referenceName": "<Azure Storage or Data Lake Store linked service>",
              "type": "LinkedServiceReference"
            },
            "path": "redirectcontainer/erroroutput"
     }
}
Property Leírás Megengedett értékek Szükséges
enableSkipIncompatibleRow Megadja, hogy kihagyja-e az inkompatibilis sorokat a másolás során. Igaz
False (alapértelmezett)
Nem
redirectIncompatibleRow Gépház A nem kompatibilis sorok naplózásakor megadható tulajdonságok csoportja.   Nem
linkedServiceName Az Azure Storage vagy az Azure Data Lake Store társított szolgáltatása a kihagyott sorokat tartalmazó napló tárolására. Egy csatolt szolgáltatás neve AzureStorage , AzureDataLakeStore amely a naplófájl tárolására használni kívánt példányra hivatkozik. Nem
ösvény A kihagyott sorokat tartalmazó naplófájl elérési útja. Adja meg a nem kompatibilis adatok naplózásához használni kívánt elérési utat. Ha nem ad meg elérési utat, a szolgáltatás létrehoz egy tárolót. Nem

Kihagyott sorok figyelése

A másolási tevékenység futtatása után a másolási tevékenység kimenetében láthatja a kihagyott sorok számát:

"output": {
            "dataRead": 95,
            "dataWritten": 186,
            "rowsCopied": 9,
            "rowsSkipped": 2,
            "copyDuration": 16,
            "throughput": 0.01,
            "redirectRowPath": "https://myblobstorage.blob.core.windows.net//myfolder/a84bf8d4-233f-4216-8cb5-45962831cd1b/",
            "errors": []
        },

Ha konfigurálja a nem kompatibilis sorok naplózását, a naplófájl az alábbi elérési úton található: https://[your-blob-account].blob.core.windows.net/[path-if-configured]/[copy-activity-run-id]/[auto-generated-GUID].csv.

A naplófájlok csak a csv-fájlok lehetnek. A kihagyott eredeti adatokat szükség esetén a rendszer vesszővel naplózza oszlopelválasztóként. A naplófájl eredeti forrásadatai mellett további két "ErrorCode" és "ErrorMessage" oszlopot is hozzáadunk, ahol láthatja a kompatibilitás alapvető okát. Az ErrorCode és az ErrorMessage idézőjeleket fog idézni.

A naplófájl tartalmának egy példája a következő:

data1, data2, data3, "UserErrorInvalidDataValue", "Column 'Prop_2' contains an invalid value 'data3'. Cannot convert 'data3' to type 'DateTime'."
data4, data5, data6, "2627", "Violation of PRIMARY KEY constraint 'PK_tblintstrdatetimewithpk'. Cannot insert duplicate key in object 'dbo.tblintstrdatetimewithpk'. The duplicate key value is (data4)."

Lásd a többi másolási tevékenységről szóló cikket: