התבנית Spanner to BigQuery היא צינור להעברת נתונים באצווה שקורא נתונים מטבלה ב-Spanner וכותב את הנתונים ב-BigQuery.
הדרישות לגבי צינורות עיבוד נתונים
- טבלת המקור ב-Spanner צריכה להתקיים לפני שמריצים את צינור הנתונים.
- מערך הנתונים ב-BigQuery צריך להתקיים לפני שמריצים את צינור הנתונים.
- קובץ JSON שמתאר את סכימת BigQuery.
הקובץ חייב להכיל מערך JSON ברמה העליונה שנקרא
fields. התוכן של המערךfieldsצריך להיות בפורמט הבא:{"name": "COLUMN_NAME", "type": "DATA_TYPE"}.הנה דוגמה לסכימת BigQuery בפורמט JSON:
{ "fields": [ { "name": "location", "type": "STRING" }, { "name": "name", "type": "STRING" }, { "name": "age", "type": "STRING" }, { "name": "color", "type": "STRING" }, { "name": "coffee", "type": "STRING" } ] }
תבנית האצווה Spanner to BigQuery לא תומכת בייבוא נתונים לשדות
STRUCT(Record) בטבלה ב-BigQuery.
פרמטרים של תבניות
פרמטרים נדרשים
- spannerInstanceId: מזהה המכונה של מסד הנתונים של Spanner שממנו צריך לקרוא.
- spannerDatabaseId: מזהה מסד הנתונים של Spanner לייצוא.
- outputTableSpec: מיקום טבלת הפלט ב-BigQuery שאליה ייכתב הפלט. לדוגמה,
<PROJECT_ID>:<DATASET_NAME>.<TABLE_NAME>.בהתאם ל-createDispositionשצוין, יכול להיות שטבלת הפלט תיצור באופן אוטומטי באמצעות סכימת Avro שסופקה על ידי המשתמש.
פרמטרים אופציונליים
- spannerProjectId: מזהה הפרויקט שבו נמצא מסד הנתונים של Spanner. ערך ברירת המחדל של הפרמטר הזה הוא הפרויקט שבו צינור ה-Dataflow פועל.
- spannerTableId: שם הטבלה של מסד הנתונים ב-Spanner לייצוא. המערכת מתעלמת מהפרמטר הזה אם הפרמטר sqlQuery מוגדר.
- spannerRpcPriority: העדיפות של הבקשה (https://cloud.google.com/spanner/docs/reference/rest/v1/RequestOptions) לקריאות של Spanner. הערכים האפשריים הם
HIGH,MEDIUMו-LOW. ערך ברירת המחדל הואHIGH. - sqlQuery: שאילתת ה-SQL שמשמשת לקריאת נתונים ממסד הנתונים של Spanner. חובה אם spannerTableId ריק.
- bigQuerySchemaPath: הנתיב ב-Cloud Storage (gs://) לקובץ ה-JSON שמגדיר את הסכימה של BigQuery. המאפיין הזה נדרש אם ערך המאפיין Create Disposition (יצירת סטטוס) הוא לא CREATE_NEVER. לדוגמה,
gs://your-bucket/your-schema.json. - writeDisposition: הערך של BigQuery WriteDisposition (https://cloud.google.com/bigquery/docs/reference/rest/v2/Job#jobconfigurationload). לדוגמה,
WRITE_APPEND,WRITE_EMPTYאוWRITE_TRUNCATE. ברירת המחדל היאWRITE_APPEND. - createDisposition: BigQuery CreateDisposition (https://cloud.google.com/bigquery/docs/reference/rest/v2/Job#jobconfigurationload). לדוגמה,
CREATE_IF_NEEDEDו-CREATE_NEVER. ברירת המחדל היאCREATE_IF_NEEDED. - useStorageWriteApi: אם הערך הוא
true, צינור הנתונים משתמש ב-BigQuery Storage Write API (https://cloud.google.com/bigquery/docs/write-api). ערך ברירת המחדל הואfalse. מידע נוסף זמין במאמר בנושא שימוש ב-Storage Write API (https://beam.apache.org/documentation/io/built-in/google-bigquery/#storage-write-api). - useStorageWriteApiAtLeastOnce: כשמשתמשים ב-Storage Write API, המאפיין הזה מציין את סמנטיקת הכתיבה. כדי להשתמש בסמנטיקה של 'לפחות פעם אחת' (https://beam.apache.org/documentation/io/built-in/google-bigquery/#at-least-once-semantics), מגדירים את הפרמטר הזה לערך
true. כדי להשתמש בסמנטיקה של 'פעם אחת בדיוק', מגדירים את הפרמטר לערךfalse. הפרמטר הזה רלוונטי רק אם הערך שלuseStorageWriteApiהואtrue. ערך ברירת המחדל הואfalse.
הפעלת התבנית
המסוף
- עוברים לדף Dataflow Create job from template (יצירת משימה מתבנית). כניסה לדף Create job from template
- בשדה שם המשימה, מזינים שם ייחודי למשימה.
- אופציונלי: בשדה Regional endpoint (נקודת קצה אזורית), בוחרים ערך מהתפריט הנפתח. אזור ברירת המחדל הוא
us-central1.רשימת האזורים שבהם אפשר להריץ משימת Dataflow מופיעה במאמר מיקומי Dataflow.
- בתפריט הנפתח Dataflow template (תבנית של העברת נתונים), בוחרים באפשרות the Spanner to BigQuery template.
- בשדות הפרמטרים שמופיעים, מזינים את ערכי הפרמטרים.
- לוחצים על הפעלת העבודה.
gcloud
במעטפת או בטרמינל, מריצים את התבנית:
gcloud dataflow flex-template run JOB_NAME \ --template-file-gcs-location=gs://dataflow-templates-REGION_NAME/VERSION/flex/Cloud_Spanner_to_BigQuery_Flex \ --project=PROJECT_ID \ --region=REGION_NAME \ --parameters \ spannerInstanceId=SPANNER_INSTANCE_ID,\ spannerDatabaseId=SPANNER_DATABASE_ID,\ spannerTableId=SPANNER_TABLE_ID,\ sqlQuery=SQL_QUERY,\ outputTableSpec=OUTPUT_TABLE_SPEC,\
מחליפים את מה שכתוב בשדות הבאים:
-
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 -
SPANNER_INSTANCE_ID: מזהה מכונת Spanner -
SPANNER_DATABASE_ID: מזהה מסד הנתונים של Spanner -
SPANNER_TABLE_ID: שם הטבלה ב-Spanner -
SQL_QUERY: שאילתת ה-SQL -
OUTPUT_TABLE_SPEC: המיקום של הטבלה ב-BigQuery
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": { "spannerInstanceId": "SPANNER_INSTANCE_ID", "spannerDatabaseId": "SPANNER_DATABASE_ID", "spannerTableId": "SPANNER_TABLE_ID", "sqlQuery": "SQL_QUERY", "outputTableSpec": "OUTPUT_TABLE_SPEC", }, "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/Cloud_Spanner_to_BigQuery_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 -
SPANNER_INSTANCE_ID: מזהה מכונת Spanner -
SPANNER_DATABASE_ID: מזהה מסד הנתונים של Spanner -
SPANNER_TABLE_ID: שם הטבלה ב-Spanner -
SQL_QUERY: שאילתת ה-SQL -
OUTPUT_TABLE_SPEC: המיקום של הטבלה ב-BigQuery