שילוב עם OpenLineage

במאמר הזה מוסבר איך לשלב את 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, צריך להשתמש ב-method של ProcessOpenLineageRunEvent API בארכיטקטורת REST ולמפות את המאפיינים של 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 עם שינויים בפורמט ההודעה
    • DatasetEvent
    • JobEvent
  • גודל ההודעה: הגודל המקסימלי של הודעה אחת הוא 5MB.

  • אורך השם: האורך של כל שם מלא בקלט ובפלט מוגבל ל-4,000 תווים.

  • מגבלות על קישורים: קישורים מקובצים לפי אירועים, עם מקסימום של 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. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.

using Google.Cloud.DataCatalog.Lineage.V1;
using Google.Protobuf.WellKnownTypes;

public sealed partial class GeneratedLineageClientSnippets
{
    /// <summary>Snippet for ProcessOpenLineageRunEvent</summary>
    /// <remarks>
    /// This snippet has been automatically generated and should be regarded as a code template only.
    /// It will require modifications to work:
    /// - It may require correct/in-range values for request initialization.
    /// - It may require specifying regional endpoints when creating the service client as shown in
    ///   https://cloud.google.com/dotnet/docs/reference/help/client-configuration#endpoint.
    /// </remarks>
    public void ProcessOpenLineageRunEventRequestObject()
    {
        // Create client
        LineageClient lineageClient = LineageClient.Create();
        // Initialize request argument(s)
        ProcessOpenLineageRunEventRequest request = new ProcessOpenLineageRunEventRequest
        {
            Parent = "",
            OpenLineage = new Struct(),
        };
        // Make the request
        ProcessOpenLineageRunEventResponse response = lineageClient.