התבנית 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.
הפעלת התבנית
המסוף
- עוברים לדף Dataflow Create job from template (יצירת משימה מתבנית). כניסה לדף 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 (תבנית של העברת נתונים), בוחרים באפשרות the Avro Files on Cloud Storage to Cloud Spanner template.
- בשדות הפרמטרים שמופיעים, מזינים את ערכי הפרמטרים.
- לוחצים על הפעלת העבודה.
gcloud
במעטפת או בטרמינל, מריצים את התבנית:
gcloud dataflow jobs run JOB_NAME \ --gcs-location gs://dataflow-templates-REGION_NAME/VERSION/GCS_Avro_to_Cloud_Spanner \ --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/GCS_Avro_to_Cloud_Spanner { "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