תבנית Cloud Storage Avro to Spanner

התבנית 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.
  • runIndexDdlInParallel: אם הערך הוא true, צינור עיבוד הנתונים מריץ הצהרות DDL ליצירת אינדקס במקביל. ערך ברירת המחדל הוא false.

הרצת התבנית

המסוף

  1. עוברים לדף Create job from template (יצירת משימה מתבנית) ב-Dataflow.
  2. כניסה לדף Create job from template
  3. בשדה שם המשימה, מזינים שם ייחודי למשימה.

    כדי שהעבודה תופיע בדף Instances של מסוף Google Cloud Spanner, שם העבודה צריך להיות בפורמט הבא:

    cloud-spanner-import-SPANNER_INSTANCE_ID-SPANNER_DATABASE_NAME

    מחליפים את מה שכתוב בשדות הבאים:

    • SPANNER_INSTANCE_ID: מזהה מכונת Spanner
    • SPANNER_DATABASE_NAME: השם של מסד הנתונים שלכם ב-Spanner
  4. אופציונלי: בשדה Regional endpoint (נקודת קצה אזורית), בוחרים ערך מהתפריט הנפתח. אזור ברירת המחדל הוא us-central1.

    רשימה של אזורים שבהם אפשר להריץ משימת Dataflow מופיעה במאמר מיקומי Dataflow.

  5. בתפריט הנפתח Dataflow template (תבנית Dataflow), בוחרים בתבנית Avro Files on Cloud Storage to Cloud Spanner (קובצי Avro ב-Cloud Storage ל-Cloud Spanner).
  6. בשדות הפרמטרים שמופיעים, מזינים את ערכי הפרמטרים.
  7. לוחצים על הפעלת העבודה.

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

המאמרים הבאים