תבנית Spanner Change Streams to Source Database

צינור עיבוד נתונים בסטרימינג. קריאת נתונים מ-Spanner Change Streams וכתיבתם למקור.

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

פרמטר תיאור
changeStreamName השם של זרם השינויים ב-Spanner שממנו צינור הנתונים קורא.
instanceId השם של מופע Spanner שבו נמצא ה-change stream.
databaseId השם של מסד הנתונים של Spanner שהשינויים בו מתועדים.
spannerProjectId שם פרויקט Spanner.
metadataInstance המופע לאחסון המטא-נתונים שמשמשים את המחבר כדי לשלוט בשימוש בנתוני ה-API של זרם השינויים.
metadataDatabase מסד הנתונים שבו מאוחסנים המטא-נתונים שמשמשים את המחבר כדי לשלוט בצריכת הנתונים של ה-API של זרם השינויים.
sourceShardsFilePath הנתיב לקובץ Cloud Storage שמכיל מידע על פרופיל החיבור של רסיסי המקור.
startTimestamp אופציונלי: משנים את חותמת הזמן של תחילת הקריאה. ברירת המחדל היא ריק.
endTimestamp אופציונלי: חותמת הזמן של סיום קריאת השינויים. אם לא מציינים חותמת זמן, הקריאה נמשכת ללא הגבלה. ברירת המחדל היא ריקה.
shadowTablePrefix אופציונלי: התחילית שמשמשת למתן שמות לטבלאות זמניות. ברירת מחדל: shadow_.
sessionFilePath אופציונלי: נתיב הסשן ב-Cloud Storage שמכיל פרטי מיפוי מ-HarbourBridge.
filtrationMode אופציונלי: מצב הסינון. מציין איך להשמיט רשומות מסוימות על סמך קריטריון. המצבים הנתמכים הם: none (לא מסננים כלום), forward_migration (מסננים רשומות שנכתבו באמצעות צינור ההעברה קדימה). ברירת המחדל היא forward_migration.
shardingCustomJarPath אופציונלי: מיקום של קובץ JAR בהתאמה אישית ב-Cloud Storage שמכיל את הלוגיקה של ההתאמה האישית לאחזור מזהה הרסיס. אם מגדירים את הפרמטר הזה, צריך להגדיר גם את הפרמטר shardingCustomJarPath. ברירת המחדל היא ריק.
shardingCustomClassName אופציונלי: שם מחלקה שמוגדר במלואו עם הטמעה של מזהה שבר מותאם אישית. אם מציינים את הפרמטר shardingCustomJarPath, חובה לציין גם את הפרמטר הזה. ברירת המחדל היא ריק.
shardingCustomParameters אופציונלי: מחרוזת שמכילה פרמטרים מותאמים אישית שיועברו למחלקת הפיצול המותאמת אישית. ברירת המחדל היא ריק.
sourceDbTimezoneOffset אופציונלי: הקיזוז מאזור הזמן UTC של מסד הנתונים של המקור. ערך לדוגמה: ‎+10:00. ברירת המחדל: +00:00.
dlqGcsPubSubSubscription אופציונלי: מינוי Pub/Sub שנעשה בו שימוש במדיניות התראות של Cloud Storage לספריית ניסיון חוזר של DLQ כשמפעילים במצב רגיל. השם צריך להיות בפורמט projects/<project-id>/subscriptions/<subscription-name>. אם מגדירים את השם, המערכת מתעלמת מהערכים של deadLetterQueueDirectory ו-dlqRetryMinutes.
skipDirectoryName אופציונלי: רשומות שדילגו עליהן בשכפול הפוך נכתבות בספרייה הזו. שם הספרייה שמוגדר כברירת מחדל הוא skip.
maxShardConnections אופציונלי: המספר המקסימלי של חיבורים שרסיס נתון יכול לקבל. ברירת המחדל היא: 10000.
deadLetterQueueDirectory אופציונלי: הנתיב שמשמש לאחסון הפלט של תור השגיאות. נתיב ברירת המחדל הוא ספרייה במיקום הזמני של משימת Dataflow.
dlqMaxRetryCount אופציונלי: מספר הפעמים המקסימלי שניתן לנסות שוב לבצע פעולות שנתקלו בשגיאות זמניות באמצעות תור ההודעות המתות. ברירת המחדל היא 500.
runMode אופציונלי: סוג מצב ההרצה. ערכים נתמכים: regular, retryDLQ. ברירת מחדל: regular. האפשרות retryDLQ מציינת שצריך לנסות שוב רק רשומות חמורות בתור להודעות שלא נמסרו.
dlqRetryMinutes אופציונלי: מספר הדקות בין ניסיונות חוזרים של תור הודעות שלא ניתן למסור. ברירת המחדל היא 10.

הרצת התבנית

המסוף

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

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

  5. בתפריט הנפתח Dataflow template (תבנית של Dataflow), בוחרים בתבנית Spanner Change Streams to Source Database (העברת נתונים מ-Spanner Change Streams למסד נתונים של מקור).
  6. בשדות הפרמטרים שמופיעים, מזינים את ערכי הפרמטרים.
  7. לוחצים על הפעלת העבודה.

‫CLI של gcloud

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

gcloud dataflow flex-template run JOB_NAME \
    --template-file-gcs-location=gs://dataflow-templates-REGION_NAME/VERSION/flex/ \
    --project=PROJECT_ID \
    --region=REGION_NAME \
    --parameters \
       changeStreamName=CHANGE_STREAM_NAME,\
       instanceId=INSTANCE_ID,\
       databaseId=DATABASE_ID,\
       spannerProjectId=SPANNER_PROJECT_ID,\
       metadataInstance=METADATA_INSTANCE,\
       metadataDatabase=METADATA_DATABASE,\
       sourceShardsFilePath=SOURCE_SHARDS_FILE_PATH,\

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

  • 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
  • CHANGE_STREAM_NAME: השם של זרם השינויים שממנו רוצים לקרוא
  • INSTANCE_ID: מזהה המופע של Cloud Spanner.
  • DATABASE_ID: מזהה מסד הנתונים ב-Cloud Spanner.
  • SPANNER_PROJECT_ID: מזהה הפרויקט ב-Cloud Spanner.
  • METADATA_INSTANCE: מופע Cloud Spanner לאחסון מטא-נתונים כשקוראים משינויים בנתונים
  • METADATA_DATABASE: מסד הנתונים ב-Cloud Spanner שבו מאוחסנים המטא-נתונים כשקוראים משינויים
  • SOURCE_SHARDS_FILE_PATH: הנתיב לקובץ GCS שמכיל את פרטי הרסיס של המקור

API

כדי להריץ את התבנית באמצעות API בארכיטקטורת REST, שולחים בקשת HTTP POST. מידע נוסף על ה-API ועל היקפי ההרשאות שלו זמין במאמר projects.templates.launch.

POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/flexTemplates:launch
{
   "launchParameter": {
     "jobName": "JOB_NAME",
     "parameters": {
       "changeStreamName": "CHANGE_STREAM_NAME",
       "instanceId": "INSTANCE_ID",
       "databaseId": "DATABASE_ID",
       "spannerProjectId": "SPANNER_PROJECT_ID",
       "metadataInstance": "METADATA_INSTANCE",
       "metadataDatabase": "METADATA_DATABASE",
       "sourceShardsFilePath": "SOURCE_SHARDS_FILE_PATH",
     },
     "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/",
     "environment": { "maxWorkers": "10" }
  }
}

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

  • 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
  • CHANGE_STREAM_NAME: השם של זרם השינויים שממנו רוצים לקרוא
  • INSTANCE_ID: מזהה המופע של Cloud Spanner.
  • DATABASE_ID: מזהה מסד הנתונים ב-Cloud Spanner.
  • SPANNER_PROJECT_ID: מזהה הפרויקט ב-Cloud Spanner.
  • METADATA_INSTANCE: מופע Cloud Spanner לאחסון מטא-נתונים כשקוראים משינויים בנתונים
  • METADATA_DATABASE: מסד הנתונים ב-Cloud Spanner שבו מאוחסנים המטא-נתונים כשקוראים משינויים
  • SOURCE_SHARDS_FILE_PATH: הנתיב לקובץ GCS שמכיל את פרטי הרסיס של המקור