במאמר הזה מוסבר איך לשלב את OpenLineage עם Knowledge Catalog (לשעבר Dataplex Universal Catalog) כדי לייבא נתוני שושלת נתונים ממערכות חיצוניות ולהציג אותם באופן חזותי. באמצעות ProcessOpenLineageRunEvent API בארכיטקטורת REST, Knowledge Catalog פועל כצרכן של OpenLineage ומאפשר לכם לאחד את שושלת הנתונים של פייפליינים בהתאמה אישית עם שושלת הנתונים המובנית משירותי 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, צריך להשתמש בשיטת API בארכיטקטורת REST ProcessOpenLineageRunEvent ולמפות את המאפיינים של OpenLineage למאפיינים של Data Lineage API.
מגבלות של שילוב OpenLineage
גרסאות נתמכות: Data Lineage API תומך בגרסה הראשית 1 של OpenLineage.
פעולות API: נקודת הקצה של Data Lineage API
ProcessOpenLineageRunEventפועלת רק כצרכן של הודעות OpenLineage, ולא כיצרן. ה-API מאפשר לכם לשלוח מידע על שושלת נתונים שנוצר על ידי כל כלי או מערכת שתואמים ל-OpenLineage אל Knowledge Catalog. חלק מהשירותים Google Cloud , כמו Managed Service for Apache Spark ו-Managed Airflow, כוללים יצרנים מובנים של OpenLineage שיכולים לשלוח אירועים לנקודת הקצה הזו, וכך לבצע אוטומציה של תיעוד השושלת מהשירותים האלה.תכונות שלא נתמכות: ה-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, מפעילים את שיטת ה-API ProcessOpenLineageRunEvent.
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 Library: Google מספקת ספריית Java בקוד פתוח שעוזרת ליצור ולשלוח אירועי OpenLineage אל Data Lineage API. מידע נוסף זמין בפוסט בבלוג Producer java library for Data Lineage is now open source. הספרייה זמינה ב-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
ה-API של Data Lineage לא שומר את כל נתוני ההיבטים מההודעות של 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 data lineage
- אפשר לנסות את זה במעבדה אינטראקטיבית: תיעוד וניתוח של עדכוני נתונים באמצעות Data Lineage ו-OpenLineage