פיתוח מחבר מותאם אישית לייבוא מטא-נתונים

במסמך הזה מובאת תבנית הפניה ליצירת מחבר בהתאמה אישית לחילוץ מטא-נתונים ממקורות של צד שלישי, כמו MySQL,‏ SQL Server ו-Oracle. אפשר להשתמש במחבר הזה כדי לייבא מטא-נתונים אל Knowledge Catalog (לשעבר Dataplex Universal Catalog) באמצעות צינור קישוריות מנוהל. דוגמה למחבר Python ל-Oracle Database Express Edition‏ (XE) כלולה כנקודת התחלה. אפשר גם לפתח מחברים באמצעות Java,‏ Scala או R.

איך פועלים מחברים

מחבר חולץ מטא-נתונים ממקור נתונים של צד שלישי, משנה את המטא-נתונים לפורמט של Knowledge Catalog ImportItem ויוצר קובצי ייבוא של מטא-נתונים שאפשר לייבא באמצעות Knowledge Catalog.

המחבר הוא חלק מצינור קישוריות מנוהל. צינור קישוריות מנוהל הוא תהליך עבודה מתואם שמשמש לייבוא מטא-נתונים של Knowledge Catalog. צינור הקישוריות המנוהל מפעיל את המחבר ומבצע משימות אחרות בתהליך הייבוא, כמו הפעלת משימת ייבוא של מטא-נתונים ותיעוד יומנים.

פייפליין הקישוריות המנוהל מפעיל את המחבר באמצעות משימה באצווה של Managed Service for Apache Spark. ‫Managed Service for Apache Spark מספק סביבת הפעלה של Spark ללא שרת (serverless). אפשר ליצור מחבר שלא משתמש ב-Spark, אבל מומלץ להשתמש ב-Spark כי הוא יכול לשפר את הביצועים של המחבר.

דרישות לגבי מחברים

המחבר צריך לעמוד בדרישות הבאות:

  • המחבר צריך להיות תמונה ב-Artifact Registry שאפשר להפעיל ב-Managed Service for Apache Spark.
  • המחבר צריך ליצור קובצי מטא-נתונים בפורמט שאפשר לייבא באמצעות משימת ייבוא מטא-נתונים של קטלוג הידע (שיטת ה-API‏ metadataJobs.create). דרישות מפורטות מופיעות במאמר בנושא קובץ ייבוא של מטא נתונים.
  • המחבר צריך לקבל את ארגומנטי שורת הפקודה הבאים כדי לקבל מידע מצינור הנתונים:

    ארגומנט בשורת הפקודה הערך שהצינור מספק
    target_project_id PROJECT_ID
    target_location_id REGION
    target_entry_group_id ENTRY_GROUP_ID
    output_bucket CLOUD_STORAGE_BUCKET_ID
    output_folder FOLDER_ID

    המחבר משתמש בארגומנטים האלה כדי ליצור מטא-נתונים בקבוצת רשומות יעד projects/PROJECT_ID/locations/REGION/entryGroups/ENTRY_GROUP_ID, וכדי לכתוב לקטגוריית Cloud Storage gs://CLOUD_STORAGE_BUCKET_ID/FOLDER_ID. כל הרצה של צינור העברת הנתונים יוצרת תיקייה חדשה FOLDER_ID בדלי CLOUD_STORAGE_BUCKET_ID. המחבר אמור לכתוב קבצים של ייבוא מטא-נתונים לתיקייה הזו.

תבניות הצינורות תומכות במחברים של PySpark. התבניות מניחות שהדרייבר (mainPythonFileUri) הוא קובץ מקומי בתמונת המחבר בשם main.py. אפשר לשנות את תבניות הצינור לתרחישים אחרים, כמו מחבר Spark, כתובת URI שונה של מנהל התקן או אפשרויות אחרות.

כך משתמשים ב-PySpark כדי ליצור פריט ייבוא בקובץ ייבוא המטא-נתונים.

"""PySpark schemas for the data."""
entry_source_schema = StructType([
      StructField("display_name", StringType()),
      StructField("source", StringType())])

aspect_schema = MapType(StringType(),
                        StructType([
                            StructField("aspect_type", StringType()),
                            StructField("data", StructType([
                            ]))
                          ])
                        )

entry_schema = StructType([
  StructField("name", StringType()),
  StructField("entry_type", StringType()),
  StructField("fully_qualified_name", StringType()),
  StructField("parent_entry", StringType()),
  StructField("entry_source", entry_source_schema),
  StructField("aspects", aspect_schema)
])

import_item_schema = StructType([
  StructField("entry", entry_schema),
  StructField("aspect_keys", ArrayType(StringType())),
  StructField("update_mask", ArrayType(StringType()))
])

לפני שמתחילים

במדריך הזה אנחנו יוצאים מנקודת הנחה שאתם מכירים את Python ו-PySpark.

כדאי לבדוק את המידע הבא:

צריך לבצע את הפעולות הבאות. יוצרים את כל המשאבים באותו Google Cloud מיקום.

  1. יוצרים או בוחרים Google Cloud פרויקט.

    תפקידים שנדרשים כדי לבחור או ליצור פרויקט

    • Select a project: כדי לבחור פרויקט לא צריך תפקיד IAM ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
    • יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד Project Creator (יצירת פרויקטים) (roles/resourcemanager.projectCreator), שכולל את ההרשאה resourcemanager.projects.create. איך מקצים תפקידים
    • יוצרים Google Cloud פרויקט:

      gcloud projects create PROJECT_ID

      מחליפים את PROJECT_ID בשם של פרויקט Google Cloud שיוצרים.