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:
- A szolgáltatás által másolandó fájlokat más alkalmazások egyszerre törlik.
- 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.
- 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:
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.
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 Beállítások fület.
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/"
}
}
}
}
Tulajdonság | Leírás | Megengedett értékek | Kötelező |
---|---|---|---|
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 |
logSettings | 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 |
Feljegyzé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ő:
Oszlop | Leírás |
---|---|
Időbélyegző | A fájl kihagyásakor megadott időbélyeg. |
Level | 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, bigfile.csv kihagyták, mert egy másik alkalmazás törölte ezt a fájlt a szolgáltatás másolásakor. A 3_nopermission.txt 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.
Feljegyzé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 elutasító szabályzatokat a másolási tevékenységben a "polyBaseSettings" használatával határoz 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/"
}
}
},
Tulajdonság | Leírás | Megengedett értékek | Kötelező |
---|---|---|---|
enableSkipIncompatibleRow | Megadja, hogy kihagyja-e az inkompatibilis sorokat a másolás során. | Igaz False (alapértelmezett) |
Nem |
logSettings | 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ő:
Oszlop | Leírás |
---|---|
Időbélyegző | Az időbélyeg, amikor a nem kompatibilis sorok kimaradtak |
Level | 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"
}
}
Tulajdonság | Leírás | Megengedett értékek | Kötelező |
---|---|---|---|
enableSkipIncompatibleRow | Megadja, hogy kihagyja-e az inkompatibilis sorokat a másolás során. | Igaz False (alapértelmezett) |
Nem |
redirectIncompatibleRowSettings | 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)."
Kapcsolódó tartalom
Lásd a többi másolási tevékenységről szóló cikket: