תבנית Spanner ל-Cloud Storage Avro

התבנית Spanner to Avro Files on Cloud Storage היא צינור להעברת נתונים באצווה שמייצא מסד נתונים שלם של Spanner אל Cloud Storage בפורמט Avro. כשמייצאים מסד נתונים של Spanner, נוצרת תיקייה בדלי שבחרתם. התיקייה מכילה:

  • קובץ spanner-export.json.
  • קובץ TableName-manifest.json לכל טבלה במסד הנתונים שייצאתם.
  • קובץ אחד או יותר מסוג TableName.avro-#####-of-#####.

לדוגמה, אם מייצאים מסד נתונים עם שתי טבלאות, Singers ו-Albums, נוצרת קבוצת הקבצים הבאה:

  • Albums-manifest.json
  • Albums.avro-00000-of-00002
  • Albums.avro-00001-of-00002
  • Singers-manifest.json
  • Singers.avro-00000-of-00003
  • Singers.avro-00001-of-00003
  • Singers.avro-00002-of-00003
  • spanner-export.json

הדרישות לגבי צינורות עיבוד נתונים

  • מסד הנתונים ב-Spanner חייב להתקיים.
  • קטגוריית הפלט של Cloud Storage חייבת להתקיים.
  • בנוסף לתפקידים של ניהול זהויות והרשאות גישה (IAM) שנדרשים להפעלת משימות Dataflow, אתם צריכים גם תפקידי IAM מתאימים כדי לקרוא את נתוני Spanner ולכתוב לקטגוריה של Cloud Storage.

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

פרמטרים נדרשים

  • instanceId: מזהה המכונה של מסד הנתונים של Spanner שרוצים לייצא.
  • databaseId: מזהה מסד הנתונים של Spanner שרוצים לייצא.
  • outputDir: הנתיב ב-Cloud Storage לייצוא קובצי Avro. תהליך הייצוא יוצר ספרייה חדשה בנתיב הזה שמכילה את הקבצים שיוצאו. לדוגמה, gs://your-bucket/your-path.

פרמטרים אופציונליים

  • avroTempDirectory: הנתיב ב-Cloud Storage שבו נכתבים קובצי Avro זמניים.
  • spannerHost: נקודת הקצה של Cloud Spanner שאליה מתקשרים בתבנית. משמש רק לבדיקה. לדוגמה, https://batch-spanner.googleapis.com. ברירת המחדל היא: https://batch-spanner.googleapis.com.
  • snapshotTime: חותמת הזמן שמתאימה לגרסה של מסד הנתונים של Spanner שרוצים לקרוא. חותמת הזמן צריכה להיות בפורמט Zulu RFC 3339 UTC. חותמת הזמן חייבת להיות בעבר, וחלים עליה כללי התיישנות. לדוגמה, 1990-12-31T23:59:60Z. ברירת המחדל היא ריק.
  • spannerProjectId: המזהה של הפרויקט ב-Google Cloud שמכיל את מסד הנתונים של Spanner שממנו רוצים לקרוא נתונים.
  • shouldExportTimestampAsLogicalType: אם הערך הוא true, חותמות הזמן מיוצאים כסוג long עם סוג לוגי timestamp-micros. כברירת מחדל, הפרמטר הזה מוגדר כ-false וחותמות הזמן מיוצאות כמחרוזות ISO-8601 ברמת דיוק של ננו-שנייה.
  • tableNames: רשימה מופרדת בפסיקים של טבלאות, שמציינת את קבוצת המשנה של מסד הנתונים של Spanner לייצוא. אם מגדירים את הפרמטר הזה, צריך לכלול את כל הטבלאות שקשורות (טבלאות אב וטבלאות שאליהן יש הפניה של מפתח זר) או להגדיר את הפרמטר shouldExportRelatedTables לערך true.אם הטבלה נמצאת בסכימה עם שם, צריך להשתמש בשם המלא. לדוגמה: sch1.foo, כאשר sch1 הוא שם הסכימה ו-foo הוא שם הטבלה. ברירת המחדל היא ריקה.
  • shouldExportRelatedTables: האם לכלול טבלאות קשורות. הפרמטר הזה משמש בשילוב עם הפרמטר tableNames. ברירת המחדל היא: false.
  • spannerPriority: העדיפות של הבקשה לקריאות ל-Spanner. הערכים האפשריים הם HIGH, MEDIUM ו-LOW. ערך ברירת המחדל הוא MEDIUM.
  • dataBoostEnabled: מגדירים את הערך ל-true כדי להשתמש במשאבי החישוב של Spanner Data Boost להרצת העבודה עם השפעה כמעט אפסית על תהליכי העבודה של Spanner OLTP. אם מגדירים את ההרשאה ל-true, צריך גם את הרשאת ה-IAM‏ spanner.databases.useDataBoost. מידע נוסף זמין במאמר בנושא Data Boost (https://cloud.google.com/spanner/docs/databoost/databoost-overview). ברירת המחדל היא: false.
  • checksumAlgorithm: אלגוריתם סיכום הביקורת שבו יש להשתמש עבור הקבצים המיוצאים. הערכים האפשריים הם MD5 ו-CRC32C. ערך ברירת המחדל הוא MD5.

הרצת התבנית

המסוף

  1. עוברים לדף Create job from template (יצירת משימה מתבנית) ב-Dataflow.
  2. כניסה לדף Create job from template
  3. בשדה שם המשימה, מזינים שם ייחודי למשימה.
  4. אופציונלי: בשדה Regional endpoint (נקודת קצה אזורית), בוחרים ערך מהתפריט הנפתח. אזור ברירת המחדל הוא us-central1.

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

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

gcloud

בדוגמה הזו נעשה שימוש בפקודה gcloud dataflow jobs run.

במעטפת או בטרמינל, מריצים את התבנית:

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,outputDir=GCS_DIRECTORY'

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

  • JOB_NAME: שם ייחודי של המשימה לפי בחירתכם

    כדי שהמשרה תופיע בחלק של Spanner במסוף Google Cloud , שם המשרה צריך להיות בפורמטcloud-spanner--INSTANCE_ID-DATABASE_ID.

  • VERSION: הגרסה של התבנית שבה רוצים להשתמש

    אפשר להשתמש בערכים הבאים:

    • latest כדי להשתמש בגרסה העדכנית של התבנית, שזמינה בתיקיית האב ללא תאריך בדלי – gs://dataflow-templates-REGION_NAME/latest/
    • שם הגרסה, כמו 2023-09-12-00_RC00, כדי להשתמש בגרסה ספציפית של התבנית, שאפשר למצוא אותה בתיקיית האב המתאימה עם התאריך בדלי – gs://dataflow-templates-REGION_NAME/
  • REGION_NAME: האזור שבו רוצים לפרוס את עבודת Dataflow, לדוגמה: us-central1
  • GCS_STAGING_LOCATION: הנתיב לכתיבת קבצים זמניים. לדוגמה: gs://mybucket/temp
  • INSTANCE_ID: מזהה מכונת Spanner
  • DATABASE_ID: מזהה מסד הנתונים של Spanner
  • GCS_DIRECTORY: הנתיב ב-Cloud Storage שאליו מייבאיםאת קובצי ה-Avro

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",
       "outputDir": "gs://GCS_DIRECTORY"
   }
}

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

  • PROJECT_ID: מזהה הפרויקט שבו רוצים להריץ את משימת Dataflow Google Cloud
  • JOB_NAME: שם ייחודי של המשימה לפי בחירתכם

    כדי שהמשרה תופיע בחלק של Spanner במסוף Google Cloud , שם המשרה צריך להיות בפורמטcloud-spanner--INSTANCE_ID-DATABASE_ID.

  • VERSION: הגרסה של התבנית שבה רוצים להשתמש

    אפשר להשתמש בערכים הבאים:

    • latest כדי להשתמש בגרסה העדכנית של התבנית, שזמינה בתיקיית האב ללא תאריך בדלי – gs://dataflow-templates-REGION_NAME/latest/
    • שם הגרסה, כמו 2023-09-12-00_RC00, כדי להשתמש בגרסה ספציפית של התבנית, שאפשר למצוא אותה בתיקיית האב המתאימה עם התאריך בדלי – gs://dataflow-templates-REGION_NAME/
  • LOCATION: האזור שבו רוצים לפרוס את עבודת Dataflow, לדוגמה: us-central1
  • GCS_STAGING_LOCATION: הנתיב לכתיבת קבצים זמניים. לדוגמה: gs://mybucket/temp
  • INSTANCE_ID: מזהה מכונת Spanner
  • DATABASE_ID: מזהה מסד הנתונים של Spanner
  • GCS_DIRECTORY: הנתיב ב-Cloud Storage שאליו מייבאיםאת קובצי ה-Avro

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