במאמר הזה מוסבר איך לשלב את OpenLineage עם Knowledge Catalog (לשעבר Dataplex Universal Catalog) כדי לייבא ולהציג באופן חזותי את שושלת היוחסין של הנתונים ממערכות חיצוניות. Knowledge Catalog פועל כצרכן של OpenLineage באמצעות ה-API בארכיטקטורת REST של ProcessOpenLineageRunEvent, וכך מאפשר לאחד את שושלת הנתונים של פייפליין בהתאמה אישית עם שושלת הנתונים המובנית משירותי Google Cloud .
סקירה כללית
OpenLineage היא פלטפורמה פתוחה לאיסוף ולניתוח של מידע על שושלת נתונים. באמצעות תקן פתוח לנתוני שושלת, OpenLineage מתעד אירועי שושלת מרכיבי פייפליין שמשתמשים ב-OpenLineage API כדי לדווח על הרצות, משימות ומערכי נתונים.
באמצעות Data Lineage API, אתם יכולים לייבא אירועים מ-OpenLineage כדי להציג אותם בממשק האינטרנט של Knowledge Catalog לצד מידע על שושלת הנתונים משירותיGoogle Cloud , כמו BigQuery, Managed Service for Apache Airflow, Cloud Data Fusion ו-Managed Service for Apache Spark.
כדי לייבא אירועי OpenLineage שמשתמשים במפרט OpenLineage, משתמשים ב-method של ה-API בארכיטקטורת REST ProcessOpenLineageRunEvent וממפים את ההיבטים של OpenLineage למאפיינים של Data Lineage API.
מגבלות השילוב של OpenLineage
גרסאות נתמכות: ה-API של Data Lineage תומך בגרסאות העיקריות 1 ו-2 של OpenLineage.
פעולות API: נקודת הקצה ל-API של Data Lineage
ProcessOpenLineageRunEventפועלת רק כצרכן של הודעות OpenLineage, ולא כיצרן. באמצעות ה-API אפשר לשלוח ל-Knowledge Catalog מידע על שושלת נתונים שנוצר על ידי כל כלי או מערכת שתואמים ל-OpenLineage. בחלק משירותי Google Cloud , כמו Managed Service for Apache Spark ו-Managed Airflow, יש יצרני OpenLineage מובְנים שיכולים לשלוח אירועים לנקודת הקצה הזו, וכך להפוך את תיעוד שושלת היוחסין מהשירותים האלה לאוטומטי.תכונות שלא נתמכות: ב-Data Lineage API אין תמיכה בתכונות הבאות:
- כל גרסה עתידית של OpenLineage עם שינויים בפורמט ההודעות
DatasetEventJobEvent
גודל ההודעה: הגודל המקסימלי של הודעה בודדת הוא 5MB.
אורך השם: האורך של כל שם מלא בקלט ובפלט מוגבל ל-4,000 תווים.
שושלת ברמת העמודה: נקודת הקצה
ProcessOpenLineageRunEventיוצרת קצוות של שושלת ברמת הטבלה רק לאירועים מותאמים אישית של OpenLineage. תרשימי שושלת יוחסין ברמת העמודה נוצרים רק לטרנספורמציות של BigQuery SQL ולמשימות של Managed Service for Apache Spark. היבטים ברמת העמודה בהתאמה אישית לא מוצגים במסוף.מגבלות על קישורים: הקישורים מקובצים לפי אירועים, עם מקסימום של 100 קישורים לכל אירוע. המספר המקסימלי של קישורים ברמת הטבלה הוא 1,000. במנועים אוטומטיים נתמכים שאוספים שושלת יוחסין ברמת העמודה, אם הודעה מכילה יותר מ-1,500 קישורים ברמת העמודה, המערכת מדלגת על המידע ברמת העמודה.
היקף התרשים: ב-Knowledge Catalog מוצג תרשים של שושלת היוחסין לכל הרצת משימה, עם הקלט והפלט של אירועי שושלת היוחסין. היא לא תומכת בתהליכים ברמה נמוכה יותר, כמו שלבי Spark.
מיפוי מאפייני פאסט של OpenLineage
למידע על מיפוי OpenLineage, קראו את המאמר מיפוי OpenLineage.
ייבוא אירוע OpenLineage
אם עדיין לא הגדרתם את OpenLineage, קראו את המאמר תחילת השימוש.
כדי לייבא אירוע של OpenLineage ל-Knowledge Catalog, צריך להפעיל את ה-method ProcessOpenLineageRunEvent של ה-API.
C#
C#
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של C# במדריך למתחילים בנושא שושלת נתונים באמצעות ספריות לקוח. למידע נוסף, קראו את מאמרי העזרה של Data Lineage C# API.
כדי לבצע אימות ב-Data Lineage, צריך להגדיר את Application Default Credentials. למידע נוסף, ראו הגדרת אימות לסביבת פיתוח מקומית.
המשך
Go
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Go במדריך למתחילים בנושא שושלת נתונים באמצעות ספריות לקוח. למידע נוסף, קראו את מאמרי העזרה של Data Lineage Go API.
כדי לבצע אימות ב-Data Lineage, צריך להגדיר את Application Default Credentials. למידע נוסף, ראו הגדרת אימות לסביבת פיתוח מקומית.
Java
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Java במדריך למתחילים בנושא שושלת נתונים באמצעות ספריות לקוח. למידע נוסף, קראו את מאמרי העזרה של Data Lineage Java API.
כדי לבצע אימות ב-Data Lineage, צריך להגדיר את Application Default Credentials. למידע נוסף, ראו הגדרת אימות לסביבת פיתוח מקומית.
Python
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Python במדריך למתחילים בנושא שושלת נתונים באמצעות ספריות לקוח. למידע נוסף, קראו את מאמרי העזרה של Data Lineage Python API.
כדי לבצע אימות ב-Data Lineage, צריך להגדיר את Application Default Credentials. למידע נוסף, ראו הגדרת אימות לסביבת פיתוח מקומית.
Ruby
Ruby
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Ruby במדריך למתחילים בנושא שושלת נתונים באמצעות ספריות לקוח. למידע נוסף, קראו את מאמרי העזרה של Data Lineage Ruby API.
כדי לבצע אימות ב-Data Lineage, צריך להגדיר את Application Default Credentials. למידע נוסף, ראו הגדרת אימות לסביבת פיתוח מקומית.
REST
כדי לייבא אירוע OpenLineage, משתמשים בשיטה processOpenLineageRunEvent.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . -
LOCATION_ID: המיקום ב- Google Cloud , למשלus-central1.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://datalineage.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID:processOpenLineageRunEvent
תוכן בקשת JSON:
{
"eventTime": "2023-04-04T13:21:16.098Z",
"eventType": "COMPLETE",
"inputs": [
{
"name": "somename",
"namespace": "customnamespace"
}
],
"job": {
"name": "somename",
"namespace": "customnamespace"
},
"outputs": [
{
"name": "somename",
"namespace": "customnamespace"
}
],
"producer": "someproducer",
"run": {
"runId": "somerunid"
},
"schemaURL": "https://openlineage.io/spec/1-0-5/OpenLineage.json#/$defs/RunEvent"
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"process": "projects/my-project/locations/us-central1/processes/my-process",
"run": "projects/my-project/locations/us-central1/processes/my-process/runs/my-run",
"lineageEvents": [
"projects/my-project/locations/us-central1/processes/my-process/runs/my-run/lineageEvents/my-lineage-event"
]
}
כלים לשליחת הודעות OpenLineage
כדי לפשט את שליחת האירועים ל-Data Lineage API, אתם יכולים להשתמש בכלים ובספריות שונים:
- ספריות הלקוח של Google Cloud ל-Data Lineage: Google מספקת ספריות לקוח כדי ליצור אינטראקציה עם Data Lineage API באופן פרוגרמטי. הוראות להתקנה מפורטות במאמר ספריות לקוח.
- ספריית Google Cloud Java Producer: Google מספקת ספריית Java בקוד פתוח שעוזרת ליצור ולשלוח אירועי OpenLineage ל-Data Lineage API. למידע נוסף, קראו את הפוסט בבלוג ספריית Java של Producer ל-Data Lineage היא עכשיו בקוד פתוח. הספרייה זמינה ב-GitHub וב-Maven.
- OpenLineage GCP Transport: ליוצרי OpenLineage שמבוססים על Java, יש GcpLineage Transport ייעודי. הוא מפשט את השילוב עם Data Lineage API, על ידי צמצום הקוד שנדרש לשליחת אירועים ל-Data Lineage API. אפשר להגדיר את
GcpLineageTransportככיור האירועים לכל יצרן OpenLineage קיים, כמו Airflow, Spark ו-Flink. מידע נוסף ודוגמאות זמינים במאמר GcpLineage.
ניתוח מידע מ-OpenLineage
כדי לנתח את אירועי OpenLineage שיובאו, קראו את המאמר הצגת תרשימי שושלת בממשק המשתמש של Knowledge Catalog.
נתוני פאסטים של OpenLineage שנשמרו
Data Lineage API לא מאחסן את כל נתוני ההיבטים מההודעות של OpenLineage. Data Lineage API מאחסן את שדות ההיבטים הבאים:
spark_versionopenlineage-spark-versionspark-version
- כל
spark.logicalPlan.* -
environment-properties(היבט מותאם אישית Google Cloud של שושלת היוחסין)origin.sourcetypeוגםorigin.namespark.app.idspark.app.namespark.batch.idspark.batch.uuidspark.cluster.namespark.cluster.regionspark.job.idspark.job.uuidspark.project.idspark.query.node.namespark.session.idspark.session.uuid
ב-Data Lineage API נשמר המידע הבא:
eventTimerun.runIdjob.namespacejob.name
המאמרים הבאים
- מידע נוסף על שילובים של שושלת נתונים עם Managed Service for Apache Spark ושושלת נתונים של Hive.
- נסו את זה במעבדה אינטראקטיבית: תיעוד וניתוח של עדכוני נתונים באמצעות שושלת נתונים ו-OpenLineage