Share via


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_taskprocess_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: , INFOWARNINGé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_taskUpdate_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 failedvan 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 finishedvan 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 finishedvan 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    ']

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 finishedvan 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:

Hivatkozások