במסמך הזה מוסבר איך לשלב את OpenLineage עם Dataplex Universal Catalog כדי להציג נתוני שושלת ממערכות שונות.
סקירה כללית
OpenLineage היא פלטפורמה פתוחה לאיסוף ולניתוח של מידע על שושלת הנתונים. OpenLineage משתמשת בתקן פתוח לנתוני שושלת, ומתעדת אירועי שושלת מרכיבים של פייפליין נתונים שמשתמשים ב-OpenLineage API כדי לדווח על הרצות, על עבודות ועל מערכי נתונים.
באמצעות Data Lineage API, אפשר לייבא אירועים של OpenLineage כדי להציג אותם בממשק האינטרנט של Dataplex Universal Catalog לצד מידע על שרשרת המקורות מGoogle Cloud שירותים כמו BigQuery, Cloud Composer, Cloud Data Fusion ו-Dataproc.
כדי לייבא אירועים של OpenLineage שמשתמשים במפרט OpenLineage, צריך להשתמש ב-method של ProcessOpenLineageRunEvent API בארכיטקטורת REST ולמפות את הפנים של OpenLineage למאפיינים של Data Lineage API.
מגבלות
Data Lineage API תומך בגרסה הראשית 1 של OpenLineage.
נקודת קצה ל-API של Data Lineage
ProcessOpenLineageRunEventפועלת רק כצרכן של הודעות OpenLineage, ולא כיצרן. ה-API מאפשר לשלוח מידע על שושלת נתונים שנוצר על ידי כל כלי או מערכת שתואמים ל-OpenLineage אל Dataplex Universal Catalog. חלק מהשירותים, כמו Dataproc ו-Cloud Composer, כוללים יצרנים מובנים של OpenLineage שיכולים לשלוח אירועים לנקודת הקצה הזו, וכך לאסוף באופן אוטומטי את נתוני השושלת מהשירותים האלה. Google Cloudה-API של מעקב מקורות הנתונים לא תומך בפעולות הבאות:
- כל גרסה עתידית של OpenLineage עם שינויים בפורמט ההודעה
DatasetEventJobEvent
הגודל המקסימלי של הודעה אחת הוא 5MB.
האורך של כל שם מלא בקלט ופלט מוגבל ל-4,000 תווים.
קישורים מקובצים לפי אירועים עם 100 קישורים. מספר הקישורים המצטבר המקסימלי הוא 1,000.
בקטלוג האוניברסלי של Dataplex מוצג תרשים של שושלת הנתונים לכל הפעלה של משימה, שבו אפשר לראות את נתוני הקלט והפלט של אירועים שקשורים לשושלת הנתונים. היא לא תומכת בתהליכים ברמה נמוכה יותר, כמו שלבי Spark.
מיפוי OpenLineage
מידע על מיפוי OpenLineage זמין במאמר מיפוי OpenLineage.
ייבוא אירוע OpenLineage
אם עדיין לא הגדרתם את OpenLineage, תוכלו לקרוא את המאמר בנושא תחילת העבודה.
כדי לייבא אירוע OpenLineage אל Dataplex Universal Catalog, קוראים ל-method של API בארכיטקטורת REST ProcessOpenLineageRunEvent:
POST https://datalineage.googleapis.com/v1/projects/{project}/locations/{location}:processOpenLineageRunEvent \
--data '{"eventTime":"2023-04-04T13:21:16.098Z","eventType":"COMPLETE","inputs":[{"name":"somename","namespace":"somenamespace"}],"job":{"name":"somename","namespace":"somenamespace"},"outputs":[{"name":"somename","namespace":"somenamespace"}],"producer":"someproducer","run":{"runId":"somerunid"},"schemaURL":"https://openlineage.io/spec/1-0-5/OpenLineage.json#/$defs/RunEvent"}'
כלים לשליחת הודעות OpenLineage
כדי לפשט את שליחת האירועים אל Data Lineage API, אפשר להשתמש בכלים ובספריות שונים:
- ספריית Java Producer של Google Cloud: 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, אפשר לעיין במאמר בנושא צפייה בתרשימי שושלת בממשק המשתמש של Dataplex Universal Catalog.
נתונים מאוחסנים
Data Lineage API לא שומר את כל נתוני ההיבטים מההודעות של OpenLineage. Data Lineage API מאחסן את שדות הפנים הבאים:
spark_versionopenlineage-spark-versionspark-version
- כל
spark.logicalPlan.* environment-properties(מאפיין שושלת מותאם אישית) Google Cloudorigin.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
המאמרים הבאים
- כדאי לעיין בשילובים של Dataproc Serverless ושל Dataproc Hive.
- אפשר לנסות את זה במעבדה אינטראקטיבית: Capture and Explore Data Updates With Data Lineage and OpenLineage