התבנית Cloud Storage Avro files to Spanner היא צינור להעברת נתונים באצווה שקורא קובצי Avro שיוצאו מ-Spanner ואוחסנו ב-Cloud Storage, ומייבא אותם למסד נתונים של Spanner.
הדרישות לגבי צינורות עיבוד נתונים
- מסד הנתונים של Spanner שמשמש כיעד צריך להתקיים ולהיות ריק.
- צריכות להיות לכם הרשאות קריאה לקטגוריה של Cloud Storage והרשאות כתיבה למסד הנתונים של Spanner שאליו אתם מייצאים.
- הנתיב של Cloud Storage שמוגדר כקלט חייב להתקיים, והוא צריך לכלול קובץ
spanner-export.jsonשמכיל תיאור JSON של הקבצים לייבוא. - אם קובץ ה-Avro של המקור לא מכיל מפתח ראשי, צריך ליצור טבלת Spanner ריקה עם מפתח ראשי לפני שמריצים את התבנית. השלב הזה לא נדרש אם מוגדר מפתח ראשי בקובץ ה-Avro.
פרמטרים של תבניות
פרמטרים נדרשים
- instanceId: מזהה המכונה של מסד הנתונים של Spanner.
- databaseId: מזהה מסד הנתונים של Spanner.
- inputDir: הנתיב ב-Cloud Storage שממנו מייבאים את קובצי Avro.
פרמטרים אופציונליים
- spannerHost: נקודת הקצה של Cloud Spanner שאליה מתקשרים בתבנית. משמש רק לבדיקה. לדוגמה,
https://batch-spanner.googleapis.com. ברירת המחדל היא: https://batch-spanner.googleapis.com. - waitForIndexes: אם הערך הוא
true, צינור הנתונים ממתין ליצירת האינדקסים. אםfalse, יכול להיות שהעבודה תסתיים בזמן שיצירת האינדקסים עדיין מתבצעת ברקע. ערך ברירת המחדל הואfalse. - waitForForeignKeys: אם הערך הוא
true, צינור העיבוד ימתין ליצירת מפתחות זרים. אםfalse, יכול להיות שהעבודה תסתיים בזמן שמפתחות זרים עדיין נוצרים ברקע. ערך ברירת המחדל הואfalse. - waitForChangeStreams: אם הערך הוא
true, הפייפליין ממתין ליצירת סנכרון שינויים בזרמי נתונים. אםfalse, יכול להיות שהעבודה תושלם בזמן שיצירת סנכרון שינויים בזרמי נתונים עדיין מתבצעת ברקע. ערך ברירת המחדל הואtrue. - waitForSequences: כברירת מחדל, צינור הייבוא נחסם בזמן יצירת רצף. אם
false, יכול להיות שצינור הייבוא יסתיים כשברקע עדיין נוצרים רצפים. - earlyIndexCreateFlag: מציין אם מופעלת יצירה מוקדמת של אינדקס. אם התבנית מפעילה מספר גדול של הצהרות DDL, יעיל יותר ליצור אינדקסים לפני טעינת הנתונים. לכן, התנהגות ברירת המחדל היא ליצור את האינדקסים קודם כשמספר הצהרות ה-DDL חורג מסף מסוים. כדי להשבית את התכונה הזו, צריך להגדיר לפרמטר
earlyIndexCreateFlagאת הערךfalse. ערך ברירת המחדל הואtrue. - spannerProjectId: המזהה של פרויקט Google Cloud שמכיל את מסד הנתונים של Spanner. אם לא מגדירים את הפרויקט, נעשה שימוש בפרויקט ברירת המחדל ב-Google Cloud.
- ddlCreationTimeoutInMinutes: הזמן הקצוב לתפוגה בדקות להצהרות DDL שמבוצעות על ידי התבנית. ערך ברירת המחדל הוא 30 דקות.
- spannerPriority: העדיפות של הבקשה לקריאות ל-Spanner. הערכים האפשריים הם
HIGH,MEDIUMו-LOW. ערך ברירת המחדל הואMEDIUM. - earlyIndexCreateThreshold: ערך הסף למספר האינדקסים והמפתחות הזרים שקובע אם ליצור אינדקסים לפני טעינת הנתונים. אם המספר הכולל של האינדקסים והמפתחות הזרים גדול מערך הסף הזה, הם ייווצרו לפני ייבוא הנתונים כדי לשפר את הביצועים. ערך ברירת המחדל הוא 40.
הרצת התבנית
המסוף
- עוברים לדף Create job from template (יצירת משימה מתבנית) ב-Dataflow. כניסה לדף Create job from template
- בשדה שם המשימה, מזינים שם ייחודי למשימה.
כדי שהעבודה תופיע בדף Instances של מסוף Google Cloud Spanner, שם העבודה צריך להיות בפורמט הבא:
cloud-spanner-import-SPANNER_INSTANCE_ID-SPANNER_DATABASE_NAME
מחליפים את מה שכתוב בשדות הבאים:
-
SPANNER_INSTANCE_ID: מזהה מכונת Spanner -
SPANNER_DATABASE_NAME: השם של מסד הנתונים שלכם ב-Spanner
-
- אופציונלי: בשדה Regional endpoint (נקודת קצה אזורית), בוחרים ערך מהתפריט הנפתח. אזור ברירת המחדל הוא
us-central1.רשימת האזורים שבהם אפשר להריץ משימת Dataflow מופיעה במאמר בנושא מיקומי Dataflow.
- בתפריט הנפתח Dataflow template (תבנית Dataflow), בוחרים בתבנית Avro Files on Cloud Storage to Cloud Spanner (קובצי Avro ב-Cloud Storage ל-Cloud Spanner).
- בשדות הפרמטרים שמופיעים, מזינים את ערכי הפרמטרים.
- לוחצים על הפעלת העבודה.
gcloud
במעטפת או בטרמינל, מריצים את התבנית:
gcloud dataflow jobs run JOB_NAME \ --gcs-location gs://dataflow-templates-REGION_NAME/VERSION/ \ --region REGION_NAME \ --staging-location GCS_STAGING_LOCATION \ --parameters \ instanceId=INSTANCE_ID,\ databaseId=DATABASE_ID,\ inputDir=GCS_DIRECTORY
מחליפים את מה שכתוב בשדות הבאים:
-
JOB_NAME: שם ייחודי של המשימה לפי בחירתכם -
VERSION: הגרסה של התבנית שבה רוצים להשתמשאפשר להשתמש בערכים הבאים:
-
latestכדי להשתמש בגרסה העדכנית של התבנית, שזמינה בתיקיית האב ללא תאריך בדלי – gs://dataflow-templates-REGION_NAME/latest/ - שם הגרסה, כמו
2023-09-12-00_RC00, כדי להשתמש בגרסה ספציפית של התבנית, שאפשר למצוא אותה בתיקיית האב המתאימה עם התאריך בדלי – gs://dataflow-templates-REGION_NAME/
-
-
REGION_NAME: האזור שבו רוצים לפרוס את עבודת Dataflow, לדוגמה:us-central1 -
INSTANCE_ID: המזהה של מופע Spanner שמכיל את מסד הנתונים -
DATABASE_ID: המזהה של מסד הנתונים של Spanner שאליו רוצים לייבא -
GCS_DIRECTORY: הנתיב ב-Cloud Storage שממנו מייבאים את קובצי ה-Avro, לדוגמה,gs://mybucket/somefolder
API
כדי להריץ את התבנית באמצעות API בארכיטקטורת REST, שולחים בקשת HTTP POST. מידע נוסף על ה-API ועל היקפי ההרשאות שלו זמין במאמר projects.templates.launch.
POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/templates:launch?gcsPath=gs://dataflow-templates-LOCATION/VERSION/ { "jobName": "JOB_NAME", "parameters": { "instanceId": "INSTANCE_ID", "databaseId": "DATABASE_ID", "inputDir": "gs://GCS_DIRECTORY" }, "environment": { "machineType": "n1-standard-2" } }
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט שבו רוצים להריץ את משימת Dataflow Google Cloud -
JOB_NAME: שם ייחודי של המשימה לפי בחירתכם -
VERSION: הגרסה של התבנית שבה רוצים להשתמשאפשר להשתמש בערכים הבאים:
-
latestכדי להשתמש בגרסה העדכנית של התבנית, שזמינה בתיקיית האב ללא תאריך בדלי – gs://dataflow-templates-REGION_NAME/latest/ - שם הגרסה, כמו
2023-09-12-00_RC00, כדי להשתמש בגרסה ספציפית של התבנית, שאפשר למצוא אותה בתיקיית האב המתאימה עם התאריך בדלי – gs://dataflow-templates-REGION_NAME/
-
-
LOCATION: האזור שבו רוצים לפרוס את עבודת Dataflow, לדוגמה:us-central1 -
INSTANCE_ID: המזהה של מופע Spanner שמכיל את מסד הנתונים -
DATABASE_ID: המזהה של מסד הנתונים של Spanner שאליו רוצים לייבא -
GCS_DIRECTORY: הנתיב ב-Cloud Storage שממנו מייבאים את קובצי ה-Avro, לדוגמה,gs://mybucket/somefolder
המאמרים הבאים
- מידע נוסף על תבניות Dataflow
- כאן אפשר לעיין ברשימת התבניות ש-Google סיפקה.