התבנית 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.
הרצת התבנית
המסוף
- עוברים לדף Create job from template (יצירת משימה מתבנית) ב-Dataflow. כניסה לדף Create job from template
- בשדה שם המשימה, מזינים שם ייחודי למשימה.
- אופציונלי: בשדה Regional endpoint (נקודת קצה אזורית), בוחרים ערך מהתפריט הנפתח. אזור ברירת המחדל הוא
us-central1.רשימת האזורים שבהם אפשר להריץ משימת Dataflow מופיעה במאמר בנושא מיקומי Dataflow.
- בתפריט הנפתח Dataflow template (תבנית Dataflow), בוחרים את התבנית Spanner to BigQuery (מ-Spanner ל-BigQuery).
- בשדות הפרמטרים שמופיעים, מזינים את ערכי הפרמטרים.
- לוחצים על הפעלת העבודה.
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 \ 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/", "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
המאמרים הבאים
- מידע נוסף על תבניות Dataflow
- כאן אפשר לעיין ברשימת התבניות ש-Google סיפקה.