במאמר הזה מוסבר איך לייבא מטא-נתונים ממקורות של צד שלישי אל Dataplex Universal Catalog. כדי לעשות את זה, צריך להגדיר ולהפעיל צינור קישוריות מנוהל ב-Workflows. בצינור הזה מתבצעת פעולת חילוץ של מטא-נתונים ממקור הנתונים המותאם אישית שלכם, וייבוא שלהם אל Dataplex Universal Catalog, וכך נוצרות קבוצות של רשומות שנדרשות.
מידע נוסף על קישוריות מנוהלת זמין במאמר סקירה כללית על קישוריות מנוהלת.
לפני שמתחילים
לפני שמייבאים מטא-נתונים, צריך להשלים את המשימות שבקטע הזה.
יצירת מחבר
מחבר מחלץ את המטא-נתונים ממקור הנתונים ויוצר קובץ ייבוא של מטא-נתונים שאפשר לייבא באמצעות Dataplex Universal Catalog. המחבר הוא תמונה של Artifact Registry שאפשר להפעיל ב-Google Cloud Serverless for Apache Spark.
יוצרים מחבר בהתאמה אישית שמחלץ מטא-נתונים ממקור צד שלישי.
דוגמה למחבר שאפשר להשתמש בו כתבנית הפניה כדי ליצור מחבר משלכם מופיעה במאמר פיתוח מחבר בהתאמה אישית לייבוא מטא-נתונים.
הגדרת Google Cloud משאבים
-
Enable the Workflows, Dataproc, Cloud Storage, Dataplex, Secret Manager, Artifact Registry, and Cloud Scheduler APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.אם אתם לא מתכננים להריץ את צינור הנתונים לפי לוח זמנים, אתם לא צריכים להפעיל את Cloud Scheduler API.
יוצרים סודות ב-Secret Manager כדי לאחסן את פרטי הכניסה למקור הנתונים של הצד השלישי.
הגדרת רשת של ענן וירטואלי פרטי (VPC) להרצת עומסי עבודה של Serverless for Apache Spark.
יוצרים קטגוריה של Cloud Storage לאחסון קובצי ייבוא המטא-נתונים.
יוצרים את המשאבים הבאים של Dataplex Universal Catalog:
יוצרים סוגים מותאמים אישית של היבטים לרשומות שרוצים לייבא.
יוצרים סוגים מותאמים אישית של רשומות לרשומות שרוצים לייבא.
התפקידים הנדרשים
חשבון שירות מייצג את הזהות של תהליך עבודה, וקובע אילו הרשאות יש לתהליך העבודה ולאילו משאבים הוא יכול לגשת. Google Cloud אתם צריכים חשבון שירות ל-Workflows (כדי להפעיל את צינור הנתונים) ול-Serverless for Apache Spark (כדי להפעיל את המחבר).
אתם יכולים להשתמש בחשבון השירות של Compute Engine שמוגדר כברירת מחדל (PROJECT_NUMBER-compute@developer.gserviceaccount.com), או ליצור חשבון שירות משלכם (או חשבונות) כדי להריץ את צינור הקישוריות המנוהל.
המסוף
נכנסים לדף IAM במסוף Google Cloud .
בוחרים את הפרויקט שאליו רוצים לייבא את המטא-נתונים.
לוחצים על Grant Access (הענקת גישה) ומזינים את כתובת האימייל של חשבון השירות.
מקצים לחשבון השירות את התפקידים הבאים:
- Logs Writer
- Dataplex Entry Group Owner
- הבעלים של משימת המטא-נתונים של Dataplex
- Dataplex Catalog Editor
- עורך של Dataproc
- Dataproc Worker
- Secret Manager Secret Accessor – בהרשאה הסודית שמאחסנת את פרטי הכניסה למקור הנתונים
- משתמש באובייקט אחסון – בקטגוריה של Cloud Storage
- Artifact Registry Reader – במאגר Artifact Registry שמכיל את תמונת המחבר
- משתמש בחשבון שירות – אם משתמשים בחשבונות שירות שונים, צריך להעניק לחשבון השירות שמריץ את Workflows את התפקיד הזה בחשבון השירות שמריץ את משימות האצווה של Serverless for Apache Spark.
- Workflows Invoker – אם רוצים לתזמן את הפייפליין
שומרים את השינויים.
gcloud
נותנים לחשבון השירות תפקידים. מריצים את הפקודות הבאות:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_ID" \ --role=roles/logging.logWriter gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_ID" \ --role=roles/dataplex.entryGroupOwner gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_ID" \ --role=roles/dataplex.metadataJobOwner gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_ID" \ --role=roles/dataplex.catalogEditor gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_ID" \ --role=roles/dataproc.editor gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_ID" \ --role=roles/dataproc.workerמחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: השם של פרויקט היעד Google Cloudשאליו רוצים לייבא את המטא-נתונים. -
SERVICE_ACCOUNT_ID: חשבון השירות, למשלmy-service-account@my-project.iam.gserviceaccount.com.
-
מקצים לחשבון השירות את התפקידים הבאים ברמת המשאב:
gcloud secrets add-iam-policy-binding SECRET_ID \ --member="serviceAccount:SERVICE_ACCOUNT_ID" \ --role=roles/secretmanager.secretaccessor gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_ID" \ --role=roles/storage.objectUser \ --condition=resource.name.startsWith('projects/_/buckets/BUCKET_ID') gcloud artifacts repositories add-iam-policy-binding REPOSITORY \ --location=REPOSITORY_LOCATION \ --member=SERVICE_ACCOUNT_ID} \ --role=roles/artifactregistry.readerמחליפים את מה שכתוב בשדות הבאים:
-
SECRET_ID: המזהה של הסוד שבו מאוחסנים פרטי הכניסה למקור הנתונים. הפורמט הואprojects/PROJECT_ID/secrets/SECRET_ID. -
BUCKET_ID: שם הקטגוריה ב-Cloud Storage. -
REPOSITORY: מאגר Artifact Registry שמכיל את תמונת המחבר. -
REPOSITORY_LOCATION: המיקום שבו המאגר מתארח. Google Cloud
-
מקצים לחשבון השירות שמריץ את Workflows את התפקיד
roles/iam.serviceAccountUserבחשבון השירות שמריץ את משימות האצווה של Serverless for Apache Spark. צריך להקצות את התפקיד הזה גם אם משתמשים באותו חשבון שירות גם ב-Workflows וגם ב-Serverless for Apache Spark.gcloud iam service-accounts add-iam-policy-binding \ serviceAccount:SERVICE_ACCOUNT_ID \ --member='SERVICE_ACCOUNT_ID' \ --role='roles/iam.serviceAccountUser'אם משתמשים בחשבונות שירות שונים, הערך של הדגל
--memberהוא חשבון השירות שמריץ את משימות האצווה של Serverless for Apache Spark.אם רוצים לתזמן את צינור עיבוד הנתונים, צריך להקצות לחשבון השירות את התפקיד הבא:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="SERVICE_ACCOUNT_ID" \ --role=roles/workflows.invoker
ייבוא מטא-נתונים
כדי לייבא מטא-נתונים, יוצרים ואז מפעילים תהליך עבודה שמריץ את צינור הקישוריות המנוהל. אפשר גם ליצור לוח זמנים להרצת צינור הנתונים.
המסוף
יוצרים את תהליך העבודה. עליך לספק את הפרטים הבאים:
- חשבון שירות: חשבון השירות שהגדרתם בקטע תפקידים נדרשים במסמך הזה.
הצפנה: בוחרים באפשרות Google-managed encryption key.
הגדרת תהליך עבודה: צריך לספק את קובץ ההגדרה הבא:
כדי להריץ את צינור עיבוד הנתונים לפי דרישה, צריך להריץ את תהליך העבודה.
מציינים את הארגומנטים הבאים של זמן הריצה:
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: השם של פרויקט היעד Google Cloudשאליו רוצים לייבא את המטא-נתונים. -
LOCATION_ID: מיקום היעד Google Cloud שבו יפעלו המשימות של Serverless for Apache Spark וייבוא המטא-נתונים, ושבו יתבצע ייבוא המטא-נתונים. -
ENTRY_GROUP_ID: המזהה של קבוצת הרשומות שאליה רוצים לייבא את המטא-נתונים. מזהה קבוצת הרשומות יכול להכיל אותיות קטנות, מספרים ומקפים.השם המלא של המשאב של קבוצת הרשומות הזו הוא
projects/PROJECT_ID/locations/LOCATION_ID/entryGroups/ENTRY_GROUP_ID. -
CREATE_ENTRY_GROUP_BOOLEAN: אם רוצים שצינור הנתונים ייצור את קבוצת הרשומות אם היא עדיין לא קיימת בפרויקט, צריך להגדיר את הערך הזה ל-true. -
BUCKET_ID: השם של קטגוריית Cloud Storage לאחסון קובץ ייבוא המטא-נתונים שנוצר על ידי המחבר. כל הרצה של תהליך עבודה יוצרת תיקייה חדשה. -
SERVICE_ACCOUNT_ID: חשבון השירות שהגדרתם בקטע תפקידים נדרשים במאמר הזה. חשבון השירות מפעיל את המחבר ב-Serverless for Apache Spark. -
ADDITIONAL_CONNECTOR_ARGUMENTS: רשימה של ארגומנטים נוספים להעברה למחבר. דוגמאות מופיעות במאמר פיתוח מחבר בהתאמה אישית לייבוא מטא-נתונים. מקיפים כל ארגומנט במירכאות כפולות ומפרידים בין הארגומנטים באמצעות פסיקים. -
CONTAINER_IMAGE: קובץ האימג' של הקונטיינר המותאם אישית של המחבר שמתארח ב-Artifact Registry. -
ENTRY_TYPES: רשימה של סוגי רשומות שנכללות בייבוא, בפורמטprojects/PROJECT_ID/locations/LOCATION_ID/entryTypes/ENTRY_TYPE_ID. המיקוםLOCATION_IDצריך להיות זהה למיקוםGoogle Cloud שאליו מייבאים את המטא-נתונים, אוglobal. -
ASPECT_TYPES: רשימה של סוגי היבטים שנכללים בייבוא, בפורמטprojects/PROJECT_ID/locations/LOCATION_ID/aspectTypes/ASPECT_TYPE_ID. המיקוםLOCATION_IDצריך להיות זהה למיקוםGoogle Cloud שאליו מייבאים את המטא-נתונים, אוglobal. -
אופציונלי: עבור הארגומנט
NETWORK_TAGS, מספקים רשימה של תגי רשת. -
אופציונלי: בארגומנט
NETWORK_URI, מציינים את ה-URI של רשת ה-VPC שמקושרת למקור הנתונים. אם מציינים רשת, לא מציינים את הארגומנט subnetwork. -
אופציונלי: בארגומנט
SUBNETWORK_URI, מציינים את ה-URI של רשת המשנה שמקושרת למקור הנתונים. אם מציינים רשת משנה, לא צריך לציין את ארגומנט הרשת.
בהתאם לכמות המטא-נתונים שמייבאים, יכול להיות שייקח כמה דקות או יותר להריץ את צינור עיבוד הנתונים. מידע נוסף על הצגת ההתקדמות זמין במאמר בנושא גישה לתוצאות של הרצת תהליך עבודה.
אחרי שהצינור סיים לפעול, אפשר לחפש את המטא-נתונים המיובאים ב-Dataplex Universal Catalog.
-
אופציונלי: אם רוצים להריץ את צינור העיבוד לפי לוח זמנים, יוצרים לוח זמנים באמצעות Cloud Scheduler. עליך לספק את הפרטים הבאים:
- תדירות: ביטוי unix-cron שמגדיר את לוח הזמנים להרצת צינור העיבוד.
- ארגומנט של תהליך העבודה: ארגומנטי זמן הריצה של המחבר, כפי שמתואר בשלב הקודם.
- חשבון שירות: חשבון השירות. חשבון השירות מנהל את הכלי לתזמון.
gcloud
שומרים את הגדרת עומס העבודה הבאה כקובץ YAML:
מגדירים משתני Bash, יוצרים את תהליך העבודה ויוצרים לוח זמנים להפעלת צינור עיבוד הנתונים (אופציונלי):
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: השם של פרויקט היעד Google Cloudשאליו רוצים לייבא את המטא-נתונים. -
LOCATION_ID: מיקום היעד Google Cloud שבו יפעלו המשימות של Serverless for Apache Spark וייבוא המטא-נתונים, ושבו יתבצע ייבוא המטא-נתונים. -
SERVICE_ACCOUNT_ID: חשבון השירות שהגדרתם בקטע תפקידים נדרשים במאמר הזה. -
WORKFLOW_DEFINITION_FILE: הנתיב לקובץ ה-YAML של הגדרת תהליך העבודה. -
WORKFLOW_NAME: השם של תהליך העבודה.
WORKFLOW_ARGUMENTS: הארגומנטים של זמן הריצה שיועברו למחבר. הארגומנטים הם בפורמט JSON:ב-Cloud Scheduler, המירכאות הכפולות בתוך המחרוזת המצוטטת מסומנות בתו בריחה (escape) באמצעות קו נטוי הפוך (\). לדוגמה:
--message-body="{\"argument\": \"{\\\"key\\\": \\\"value\\\"}\"}".מחליפים את מה שכתוב בשדות הבאים:
-
ENTRY_GROUP_ID: המזהה של קבוצת הרשומות שאליה רוצים לייבא את המטא-נתונים. מזהה קבוצת הרשומות יכול להכיל אותיות קטנות, מספרים ומקפים.השם המלא של המשאב של קבוצת הרשומות הזו הוא
projects/PROJECT_ID/locations/LOCATION_ID/entryGroups/ENTRY_GROUP_ID. -
CREATE_ENTRY_GROUP_BOOLEAN: אם רוצים שצינור הנתונים ייצור את קבוצת הרשומות אם היא עדיין לא קיימת בפרויקט, צריך להגדיר את הערך הזה ל-true. -
BUCKET_ID: השם של קטגוריית Cloud Storage לאחסון קובץ ייבוא המטא-נתונים שנוצר על ידי המחבר. כל הרצה של תהליך עבודה יוצרת תיקייה חדשה. -
ADDITIONAL_CONNECTOR_ARGUMENTS: רשימה של ארגומנטים נוספים להעברה למחבר. דוגמאות מופיעות במאמר פיתוח מחבר בהתאמה אישית לייבוא מטא-נתונים. -
CONTAINER_IMAGE: קובץ האימג' של הקונטיינר המותאם אישית של המחבר שמתארח ב-Artifact Registry. -
ENTRY_TYPES: רשימה של סוגי רשומות שנכללות בייבוא, בפורמטprojects/PROJECT_ID/locations/LOCATION_ID/entryTypes/ENTRY_TYPE_ID. המיקוםLOCATION_IDצריך להיות זהה למיקוםGoogle Cloud שאליו מייבאים את המטא-נתונים, אוglobal. -
ASPECT_TYPES: רשימה של סוגי היבטים שנכללים בייבוא, בפורמטprojects/PROJECT_ID/locations/LOCATION_ID/aspectTypes/ASPECT_TYPE_ID. המיקוםLOCATION_IDצריך להיות זהה למיקוםGoogle Cloud שאליו מייבאים את המטא-נתונים, אוglobal. -
אופציונלי: עבור הארגומנט
NETWORK_TAGS, מספקים רשימה של תגי רשת. -
אופציונלי: בארגומנט
NETWORK_URI, מציינים את ה-URI של רשת ה-VPC שמקושרת למקור הנתונים. אם מציינים רשת, לא מציינים את הארגומנט subnetwork. -
אופציונלי: בארגומנט
SUBNETWORK_URI, מציינים את ה-URI של רשת המשנה שמקושרת למקור הנתונים. אם מציינים רשת משנה, לא צריך לציין את ארגומנט הרשת.
-
CRON_SCHEDULE_EXPRESSION: ביטוי cron שמגדיר את לוח הזמנים להרצת צינור העיבוד. לדוגמה, כדי להפעיל את התזמון בחצות בכל יום, משתמשים בביטוי0 0 * * *.
-
כדי להריץ את צינור עיבוד הנתונים לפי דרישה, מריצים את תהליך העבודה:
הארגומנטים של תהליך העבודה הם בפורמט JSON, אבל לא נעשה בהם escape.
בהתאם לכמות המטא-נתונים שמייבאים, יכול להיות שתהליך העבודה יימשך כמה דקות או יותר. מידע נוסף על הצגת ההתקדמות זמין במאמר גישה לתוצאות של הרצת תהליך עבודה.
אחרי שהצינור סיים לפעול, אפשר לחפש את המטא-נתונים המיובאים ב-Dataplex Universal Catalog.
Terraform
משכפלים את מאגר
cloud-dataplex.המאגר כולל את קובצי Terraform הבאים:
-
main.tf: הגדרת המשאבים שרוצים ליצור. Google Cloud -
variables.tf: מגדיר את המשתנים. -
byo-connector.tfvars: הגדרת המשתנים של צינור הקישוריות המנוהל.
-
עורכים את הקובץ
.tfvarsכדי להחליף את הפלייסהולדרים בפרטים של המחבר.מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: השם של פרויקט היעד Google Cloudשאליו רוצים לייבא את המטא-נתונים. -
LOCATION_ID: מיקום היעד Google Cloud שבו יפעלו המשימות של Serverless for Apache Spark וייבוא המטא-נתונים, ושבו יתבצע ייבוא המטא-נתונים. -
SERVICE_ACCOUNT_ID: חשבון השירות שהגדרתם בקטע תפקידים נדרשים במאמר הזה. -
CRON_SCHEDULE_EXPRESSION: ביטוי cron שמגדיר את לוח הזמנים להרצת צינור העיבוד. לדוגמה, כדי להפעיל את התזמון בחצות בכל יום, משתמשים בביטוי0 0 * * *. -
ENTRY_GROUP_ID: המזהה של קבוצת הרשומות שאליה רוצים לייבא את המטא-נתונים. מזהה קבוצת הרשומות יכול להכיל אותיות קטנות, מספרים ומקפים.השם המלא של המשאב של קבוצת הרשומות הזו הוא
projects/PROJECT_ID/locations/LOCATION_ID/entryGroups/ENTRY_GROUP_ID. -
CREATE_ENTRY_GROUP_BOOLEAN: אם רוצים שצינור הנתונים ייצור את קבוצת הרשומות אם היא עדיין לא קיימת בפרויקט, צריך להגדיר את הערך הזה ל-true. -
BUCKET_ID: השם של קטגוריית Cloud Storage לאחסון קובץ ייבוא המטא-נתונים שנוצר על ידי המחבר. כל הרצה של תהליך עבודה יוצרת תיקייה חדשה. -
ADDITIONAL_CONNECTOR_ARGUMENTS: רשימה של ארגומנטים נוספים להעברה למחבר. דוגמאות מופיעות במאמר פיתוח מחבר בהתאמה אישית לייבוא מטא-נתונים. מקיפים כל ארגומנט במירכאות כפולות ומפרידים בין הארגומנטים באמצעות פסיקים. -
CONTAINER_IMAGE: קובץ האימג' של הקונטיינר המותאם אישית של המחבר שמתארח ב-Artifact Registry. -
ENTRY_TYPES: רשימה של סוגי רשומות שנכללות בייבוא, בפורמטprojects/PROJECT_ID/locations/LOCATION_ID/entryTypes/ENTRY_TYPE_ID. המיקוםLOCATION_IDצריך להיות זהה למיקוםGoogle Cloud שאליו מייבאים את המטא-נתונים, אוglobal. -
ASPECT_TYPES: רשימה של סוגי היבטים שנכללים בייבוא, בפורמטprojects/PROJECT_ID/locations/LOCATION_ID/aspectTypes/ASPECT_TYPE_ID. המיקוםLOCATION_IDצריך להיות זהה למיקוםGoogle Cloud שאליו מייבאים את המטא-נתונים, אוglobal. -
אופציונלי: עבור הארגומנט
NETWORK_TAGS, מספקים רשימה של תגי רשת. -
אופציונלי: בארגומנט
NETWORK_URI, מציינים את ה-URI של רשת ה-VPC שמקושרת למקור הנתונים. אם מציינים רשת, לא מציינים את הארגומנט subnetwork. -
אופציונלי: בארגומנט
SUBNETWORK_URI, מציינים את ה-URI של רשת המשנה שמקושרת למקור הנתונים. אם מציינים רשת משנה, לא צריך לציין את ארגומנט הרשת.
-
מאתחלים את Terraform:
terraform initמאמתים את Terraform באמצעות קובץ
.tfvars:terraform plan --var-file=CONNECTOR_VARIABLES_FILE.tfvarsמחליפים את
CONNECTOR_VARIABLES_FILEבשם של קובץ הגדרות המשתנים.פורסים את Terraform באמצעות הקובץ
.tfvars:terraform apply --var-file=CONNECTOR_VARIABLES_FILE.tfvarsTerraform יוצרת תהליך עבודה ומשימה ב-Cloud Scheduler בפרויקט שצוין. Workflows מריץ את צינור עיבוד הנתונים לפי התזמון שאתם מציינים.
בהתאם לכמות המטא-נתונים שמייבאים, יכול להיות שתהליך העבודה יימשך כמה דקות או יותר. מידע נוסף על הצגת ההתקדמות זמין במאמר גישה לתוצאות של הרצת תהליך עבודה.
אחרי שהצינור סיים לפעול, אפשר לחפש את המטא-נתונים המיובאים ב-Dataplex Universal Catalog.
צפייה ביומני המשרות
שימוש ב-Cloud Logging כדי להציג יומנים של צינור קישוריות מנוהל. מטען הייעודי (payload) של היומן כולל קישור ליומנים של משימת האצווה Serverless for Apache Spark ועבודת ייבוא המטא-נתונים, לפי הצורך. מידע נוסף זמין במאמר בנושא הצגת יומני זרימת עבודה.
פתרון בעיות
כדאי לנסות את ההצעות הבאות לפתרון בעיות:
- מגדירים את רמת היומן של משימת הייבוא למשימת המטא-נתונים לשימוש ברישום ביומן ברמת ניפוי הבאגים במקום ברישום ביומן ברמת המידע.
- בודקים את היומנים של משימת האצווה Serverless for Apache Spark (לגבי הפעלות של מחבר) ואת משימת ייבוא המטא-נתונים. מידע נוסף זמין במאמרים בנושא שליחת שאילתות ליומנים של Serverless for Apache Spark ושליחת שאילתות ליומנים של מטא-נתונים של משימות.
- אם אי אפשר לייבא רשומה באמצעות צינור העיבוד והודעת השגיאה לא מספקת מספיק מידע, נסו ליצור רשומה בהתאמה אישית עם אותם פרטים בקבוצת רשומות לבדיקה. מידע נוסף זמין במאמר יצירת רשומה בהתאמה אישית.