Jegyzékbetöltési problémák elhárítása Airflow-feladatnaplók használatával
Ez a cikk segít az Azure Data Manager for Energy jegyzékbetöltésével kapcsolatos munkafolyamat-problémák elhárításában Airflow-feladatnaplók használatával.
Jegyzékbetöltési DAG-munkafolyamat-típusok
A jegyzékbetöltéshez kétféle irányított aciklikus gráf (DAG) munkafolyamat használható: egyetlen jegyzékfájl és kötegfeltöltés.
Önálló jegyzék
Egyetlen jegyzékfájlt használ a jegyzékbetöltési munkafolyamat aktiválásához.
DagTaskName érték | Leírás |
---|---|
update_status_running_task |
Meghívja a munkafolyamat-szolgáltatást, és megjelöli a DAG running állapotát az adatbázisban. |
check_payload_type |
Ellenőrzi, hogy a betöltési típus köteg vagy egy jegyzék. |
validate_manifest_schema_task |
Biztosítja, hogy a jegyzékben említett összes sématípus jelen legyen, és hivatkozási sémaintegritás legyen. Az összes érvénytelen érték ki lesz távolítva a jegyzékből. |
provide_manifest_intergrity_task |
Ellenőrzi az OSDU® R3 jegyzékben lévő hivatkozásokat, és eltávolítja az érvénytelen entitásokat. Ez az operátor felelős a szülő-gyermek ellenőrzésért. A rendszer minden árva jellegű entitást naplóz és kizár az ellenőrzött jegyzékből. A rendszer minden külső hivatkozott rekordot keres. Ha egyik sem található, a jegyzék entitás el lesz dobva. Az összes helyettesítő kulcshivatkozás is megoldódott. |
process_single_manifest_file_task |
Végrehajtja az előző lépésből beszerzett végleges jegyzék entitások betöltését. Az adatrekordok a tárolási szolgáltatáson keresztül kerülnek betöltésre. |
update_status_finished_task |
Meghívja a munkafolyamat-szolgáltatást, és megjelöli a DAG finished állapotát az adatbázisban vagy failed az adatbázisban. |
Batch-feltöltés
Több jegyzékfájl is része ugyanannak a munkafolyamat-szolgáltatáskérésnek. A kérelem hasznos adatainak jegyzékszakasza egy lista, nem pedig egy elemszótár.
DagTaskName érték | Leírás |
---|---|
update_status_running_task |
Meghívja a munkafolyamat-szolgáltatást, és megjelöli a DAG running állapotát az adatbázisban. |
check_payload_type |
Ellenőrzi, hogy a betöltési típus köteg vagy egy jegyzék. |
batch_upload |
A jegyzékjegyzékek listáját három, párhuzamosan feldolgozandó kötegre osztja. (Nincs kibocsátva tevékenységnapló.) |
process_manifest_task_(1 / 2 / 3) |
A jegyzékjegyzékek listáját három csoportra osztja, és feldolgozza őket. A ( ) provide_manifest_intergrity_task process_single_manifest_file_task területen végrehajtott validate_manifest_schema_task összes lépés össze van tömörítve és egymás után hajtva végre ezekben a feladatokban. |
update_status_finished_task |
Meghívja a munkafolyamat-szolgáltatást, és megjelöli a DAG finished állapotát az adatbázisban vagy failed az adatbázisban. |
A hasznos adattípus (egy vagy köteg) alapján a check_payload_type
tevékenység kiválasztja a megfelelő ágat, és kihagyja a tevékenységeket a másik ágban.
Előfeltételek
Integrált Airflow-feladatnaplókkal kell rendelkeznie az Azure Monitorral. Lásd: Airflow-naplók integrálása az Azure Monitorral.
A probléma hibakereséséhez a következő oszlopok jelennek meg az Airflow tevékenységnaplóiban:
Paraméter neve | Leírás |
---|---|
RunID |
Az aktivált DAG-futtatás egyedi futtatási azonosítója. |
CorrelationID |
A DAG-futtatás egyedi korrelációs azonosítója (ugyanaz, mint a futtatási azonosító). |
DagName |
DAG munkafolyamat neve. A folyamat neve például Osdu_ingest a jegyzékbetöltés. |
DagTaskName |
A DAG-munkafolyamat tevékenységneve. Például update_status_running_task a jegyzékbetöltés feladatneve. |
Content |
Hibaüzenetek (hibák vagy kivételek), amelyeket az Airflow a feladat végrehajtása során bocsát ki. |
LogTimeStamp |
A DAG-futtatások időintervalluma. |
LogLevel |
A hiba szintje. Az értékek a következőkDEBUG : , INFO WARNING ésERROR . A legtöbb kivételt és hibaüzenetet a ERROR szint szerinti szűréssel tekintheti meg. |
Sikertelen DAG-futtatás
A munkafolyamat futtatása sikertelen volt Update_status_running_task
Update_status_finished_task
, és az adatrekordok nem lettek betöltve.
Lehetséges okok
- A particionálási API meghívása nem lett hitelesítve, mivel az adatpartíció azonosítója helytelen.
- A kérelem törzsének végrehajtási környezetében helytelen a kulcsnév.
- A munkafolyamat-szolgáltatás nem fut, vagy 5xx hibát jelez.
Munkafolyamat állapota
A munkafolyamat állapota a következőként failed
van megjelölve: .
Megoldás
Ellenőrizze az Airflow tevékenységnaplóit a következőhöz update_status_running_task
: vagy update_status_finished_task
. Javítsa ki a hasznos adatokat a megfelelő adatpartíció-azonosító vagy kulcsnév átadásával.
Minta Kusto-lekérdezés:
OEPAirFlowTask
| where DagName == "Osdu_ingest"
| where DagTaskName == "update_status_running_task"
| where LogLevel == "ERROR" // ERROR/DEBUG/INFO/WARNING
| where RunID == '<run_id>'
Minta nyomkövetési kimenet:
[2023-02-05, 12:21:54 IST] {taskinstance.py:1703} ERROR - Task failed with exception
Traceback (most recent call last):
File "/home/airflow/.local/lib/python3.8/site-packages/osdu_ingestion/libs/context.py", line 50, in populate
data_partition_id = ctx_payload['data-partition-id']
KeyError: 'data-partition-id'
requests.exceptions.HTTPError: 403 Client Error: Forbidden for url: https://contoso.energy.azure.com/api/workflow/v1/workflow/Osdu_ingest/workflowRun/e9a815f2-84f5-4513-9825-4d37ab291264
Sikertelen sémaérvényesítés
A rekordok nem lettek betöltve, mert a séma érvényesítése sikertelen volt.
Lehetséges okok
- A sémaszolgáltatás "Séma nem található" hibaüzenetet ad.
- A jegyzéktörzs nem felel meg a sématípusnak.
- A sémahivatkozások helytelenek.
- A sémaszolgáltatás 5xx hibát jelez.
Munkafolyamat állapota
A munkafolyamat állapota a következőként finished
van megjelölve: . Nem tapasztal hibát a munkafolyamat állapotában, mert a rendszer kihagyja az érvénytelen entitásokat, és a betöltés folytatódik.
Megoldás
Ellenőrizze az Airflow tevékenységnaplóit a következőhöz validate_manifest_schema_task
: vagy process_manifest_task
. Javítsa ki a hasznos adatokat a megfelelő adatpartíció-azonosító vagy kulcsnév átadásával.
Minta Kusto-lekérdezés:
OEPAirFlowTask
| where DagName has "Osdu_ingest"
| where DagTaskName == "validate_manifest_schema_task" or DagTaskName has "process_manifest_task"
| where LogLevel == "ERROR"
| where RunID == "<run_id>"
| order by ['time'] asc
Minta nyomkövetési kimenet:
Error traces to look out for
[2023-02-05, 14:55:37 IST] {connectionpool.py:452} DEBUG - https://contoso.energy.azure.com:443 "GET /api/schema-service/v1/schema/osdu:wks:work-product-component--WellLog:2.2.0 HTTP/1.1" 404 None
[2023-02-05, 14:55:37 IST] {authorization.py:137} ERROR - {"error":{"code":404,"message":"Schema is not present","errors":[{"domain":"global","reason":"notFound","message":"Schema is not present"}]}}
[2023-02-05, 14:55:37 IST] {validate_schema.py:170} ERROR - Error on getting schema of kind 'osdu:wks:work-product-component--WellLog:2.2.0'
[2023-02-05, 14:55:37 IST] {validate_schema.py:171} ERROR - 404 Client Error: Not Found for url: https://contoso.energy.azure.com/api/schema-service/v1/schema/osdu:wks:work-product-component--WellLog:2.2.0
[2023-02-05, 14:55:37 IST] {validate_schema.py:314} WARNING - osdu:wks:work-product-component--WellLog:2.2.0 is not present in Schema service.
[2023-02-05, 15:01:23 IST] {validate_schema.py:322} ERROR - Schema validation error. Data field.
[2023-02-05, 15:01:23 IST] {validate_schema.py:323} ERROR - Manifest kind: osdu:wks:work-product-component--WellLog:1.1.0
[2023-02-05, 15:01:23 IST] {validate_schema.py:324} ERROR - Error: 'string-value' is not of type 'number'
Failed validating 'type' in schema['properties']['data']['allOf'][3]['properties']['SamplingStop']:
{'description': 'The stop value/last value of the ReferenceCurveID, '
'typically the end depth of the logging.',
'example': 7500,
'title': 'Sampling Stop',
'type': 'number',
'x-osdu-frame-of-reference': 'UOM'}
On instance['data']['SamplingStop']:
'string-value'
Sikertelen referenciaellenőrzések
A rekordok nem lettek betöltve, mert a hivatkozási ellenőrzések sikertelenek voltak.
Lehetséges okok
- A hivatkozott rekordok nem találhatók.
- A szülőrekordok nem találhatók.
- A keresési szolgáltatás 5xx hibát jelez.
Munkafolyamat állapota
A munkafolyamat állapota a következőként finished
van megjelölve: . Nem tapasztal hibát a munkafolyamat állapotában, mert a rendszer kihagyja az érvénytelen entitásokat, és a betöltés folytatódik.
Megoldás
Ellenőrizze az Airflow tevékenységnaplóit a következőhöz provide_manifest_integrity_task
: vagy process_manifest_task
.
Minta Kusto-lekérdezés:
OEPAirFlowTask
| where DagName has "Osdu_ingest"
| where DagTaskName == "provide_manifest_integrity_task" or DagTaskName has "process_manifest_task"
| where Content has 'Search query "'or Content has 'response ids: ['
| where RunID has "<run_id>"
Mivel nincsenek kifejezetten hivatkozási integritási feladatokra vonatkozó hibanaplók, ellenőrizze a hibakeresési napló utasításait, hogy az összes külső rekord le lett-e kérve a keresési szolgáltatáson keresztül.
A következő minta nyomkövetési kimenete például egy, a keresési szolgáltatáson keresztül lekérdezett rekordot jelenít meg a hivatkozási integritás érdekében:
[2023-02-05, 19:14:40 IST] {search_record_ids.py:75} DEBUG - Search query "contoso-dp1:work-product-component--WellLog:5ab388ae0e140838c297f0e6559" OR "contoso-dp1:work-product-component--WellLog:5ab388ae0e1b40838c297f0e6559" OR "contoso-dp1:work-product-component--WellLog:5ab388ae0e1b40838c297f0e6559758a"
A kimenet a beolvasott és a rendszerben lévő rekordokat jeleníti meg. A rekordra hivatkozó kapcsolódó jegyzékobjektum el lesz dobva, és a továbbiakban nem lesz betöltve, ha észrevette, hogy egyes rekordok nem voltak jelen.
[2023-02-05, 19:14:40 IST] {search_record_ids.py:141} DEBUG - response ids: ['contoso-dp1:work-product-component--WellLog:5ab388ae0e1b40838c297f0e6559758a:1675590506723615', 'contoso-dp1:work-product-component--WellLog:5ab388ae0e1b40838c297f0e6559758a ']
Érvénytelen jogi címkék vagy ACL-ek a jegyzékben
A rekordok nem lettek betöltve, mert a jegyzék érvénytelen jogi címkéket vagy hozzáférés-vezérlési listákat (ACL-eket) tartalmaz.
Lehetséges okok
- Az ACL-ek helytelenek.
- A jogi címkék helytelenek.
- A tárolási szolgáltatás 5xx hibát jelez.
Munkafolyamat állapota
A munkafolyamat állapota a következőként finished
van megjelölve: . Nem tapasztal hibát a munkafolyamat állapotában.
Megoldás
Ellenőrizze az Airflow tevékenységnaplóit a következőhöz process_single_manifest_file_task
: vagy process_manifest_task
.
Minta Kusto-lekérdezés:
OEPAirFlowTask
| where DagName has "Osdu_ingest"
| where DagTaskName == "process_single_manifest_file_task" or DagTaskName has "process_manifest_task"
| where LogLevel == "ERROR"
| where RunID has "<run_id>"
| order by ['time'] asc
Minta nyomkövetési kimenet:
"PUT /api/storage/v2/records HTTP/1.1" 400 None
[2023-02-05, 16:57:05 IST] {authorization.py:137} ERROR - {"code":400,"reason":"Invalid legal tags","message":"Invalid legal tags: contoso-dp1-R3FullManifest-Legal-Tag-Test779759112"}
A kimenet a lekért rekordokat jelzi. A hiányzó keresési rekordoknak megfelelő jegyzék entitásrekordokat a rendszer elveti, és nem betölti.
"PUT /api/storage/v2/records HTTP/1.1" 400 None
[2023-02-05, 16:58:46 IST] {authorization.py:137} ERROR - {"code":400,"reason":"Validation error.","message":"createOrUpdateRecords.records[0].acl: Invalid group name 'data1.default.viewers@contoso-dp1.dataservices.energy'"}
[2023-02-05, 16:58:46 IST] {single_manifest_processor.py:83} WARNING - Can't process entity SRN: surrogate-key:0ef20853-f26a-456f-b874-3f2f5f35b6fb
Ismert problémák
- Mivel nincsenek konkrét hibanaplók a hivatkozási integritási feladatokhoz, manuálisan kell keresnie a hibakeresési napló utasításait, hogy ellenőrizze, hogy az összes külső rekord le lett-e kérve a keresési szolgáltatáson keresztül.
Következő lépések
Lépjen tovább a következő oktatóanyagra, és ismerje meg, hogyan hajthat végre jegyzékalapú fájlbetöltést: