תבנית BigQuery ל-Bigtable היא צינור להעברת נתונים באצווה שמעתיק נתונים מטבלה ב-BigQuery לטבלת Bigtable קיימת. התבנית יכולה לקרוא את כל הטבלה או לקרוא רשומות ספציפיות באמצעות שאילתה שסופקה.
הדרישות לגבי צינורות עיבוד נתונים
- טבלת המקור ב-BigQuery צריכה להתקיים.
- הטבלה ב-Bigtable חייבת להתקיים.
- לחשבון השירות של העובד צריכה להיות ההרשאה
roles/bigquery.datasets.create. מידע נוסף זמין במאמר מבוא ל-IAM.
פרמטרים של תבניות
פרמטרים נדרשים
- readIdColumn: השם של העמודה ב-BigQuery שבה מאוחסן המזהה הייחודי של השורה.
- bigtableWriteInstanceId: המזהה של מכונת Bigtable שמכילה את הטבלה.
- bigtableWriteTableId: המזהה של טבלת Bigtable שאליה רוצים לכתוב.
- bigtableWriteColumnFamily: השם של קבוצת העמודות בטבלת Bigtable שאליה ייכתבו הנתונים.
פרמטרים אופציונליים
- timestampColumn: השם של העמודה ב-BigQuery שתשמש כחותמת הזמן של התא בעמודה ב-Bigtable. הערך חייב להיות מדויק עד אלפית השנייה, למשל INT64 / Long. אם שורה לא מכילה את השדה, המערכת תשתמש בחותמת הזמן של הכתיבה שמוגדרת כברירת מחדל. העמודה שצוינה לא תיכלל כחלק מהשורה ב-Bigtable כעמודה נפרדת.
- skipNullValues: דגל שמציין אם ערכי null יכולים להתפשט כערך ריק או שהעמודה תדלג לחלוטין כדי להתאים לפורמט של טבלה דלילה ב-Bigtable. במקרים שבהם הפעולה הזו מובילה לשורה ריקה, למשל rowkey תקין אבל ללא עמודות, אי אפשר לכתוב את השורה ב-Bigtable והמערכת תדלג עליה. ברירת המחדל היא: false.
- inputTableSpec: הטבלה ב-BigQuery שממנה יתבצע קריאה. אם מציינים את
inputTableSpec, התבנית קוראת את הנתונים ישירות מאחסון BigQuery באמצעות BigQuery Storage Read API (https://cloud.google.com/bigquery/docs/reference/storage). מידע על מגבלות ב-Storage Read API זמין בכתובת https://cloud.google.com/bigquery/docs/reference/storage#limitations. חובה לצייןinputTableSpecאוquery. אם מגדירים את שני הפרמטרים, התבנית משתמשת בפרמטרquery. לדוגמה,<BIGQUERY_PROJECT>:<DATASET_NAME>.<INPUT_TABLE>. - outputDeadletterTable: הטבלה ב-BigQuery להודעות שלא הצליחו להגיע לטבלת הפלט. אם טבלה לא קיימת, היא נוצרת במהלך הרצת צינור הנתונים. אם לא מציינים ערך, המערכת משתמשת בערך
<outputTableSpec>_error_records. לדוגמה,<PROJECT_ID>:<DATASET_NAME>.<DEADLETTER_TABLE>. - query: שאילתת ה-SQL שמשמשת לקריאת נתונים מ-BigQuery. אם מערך הנתונים ב-BigQuery נמצא בפרויקט אחר ממשימת Dataflow, צריך לציין את השם המלא של מערך הנתונים בשאילתת ה-SQL, למשל: <PROJECT_ID>.<DATASET_NAME>.<TABLE_NAME>. כברירת מחדל, הפרמטר
queryמשתמש ב-GoogleSQL (https://cloud.google.com/bigquery/docs/introduction-sql), אלא אםuseLegacySqlהואtrue. חובה לצייןinputTableSpecאוquery. אם מגדירים את שני הפרמטרים, התבנית משתמשת בפרמטרquery. לדוגמה,select * from sampledb.sample_table. - useLegacySql: מגדירים את הערך ל-
trueכדי להשתמש ב-SQL מדור קודם. הפרמטר הזה רלוונטי רק כשמשתמשים בפרמטרquery. ברירת המחדל היאfalse. - queryLocation: נדרש כשקוראים מתצוגה מורשית ללא הרשאה לטבלה הבסיסית. לדוגמה,
US. - queryTempDataset: באמצעות האפשרות הזו, אפשר להגדיר מערך נתונים קיים כדי ליצור את הטבלה הזמנית לאחסון תוצאות השאילתה. לדוגמה,
temp_dataset. - KMSEncryptionKey: אם קוראים מ-BigQuery באמצעות מקור שאילתה, משתמשים במפתח Cloud KMS הזה כדי להצפין טבלאות זמניות שנוצרו. לדוגמה,
projects/your-project/locations/global/keyRings/your-keyring/cryptoKeys/your-key. - bigtableRpcAttemptTimeoutMs: הזמן הקצוב לתפוגה של כל ניסיון ל-RPC של Bigtable, באלפיות השנייה.
- bigtableRpcTimeoutMs: הזמן הקצוב הכולל לתפוגה עבור פעולת Bigtable RPC באלפיות השנייה.
- bigtableAdditionalRetryCodes: קודי הניסיון החוזר הנוספים. לדוגמה,
RESOURCE_EXHAUSTED,DEADLINE_EXCEEDED. - bigtableWriteAppProfile: המזהה של פרופיל האפליקציה ב-Bigtable שבו רוצים להשתמש לייצוא. אם לא מציינים פרופיל אפליקציה, Bigtable משתמש בפרופיל האפליקציה שמוגדר כברירת מחדל (https://cloud.google.com/bigtable/docs/app-profiles#default-app-profile) של המופע.
- bigtableWriteProjectId: המזהה של הפרויקט ב-Google Cloud שמכיל את מופע Bigtable שאליו ייכתבו הנתונים.
- bigtableBulkWriteLatencyTargetMs: יעד זמן האחזור של Bigtable באלפיות השנייה לצורך הגבלת קצב העברת הנתונים על סמך זמן האחזור.
- bigtableBulkWriteMaxRowKeyCount: המספר המקסימלי של מפתחות שורות בפעולת כתיבה של קבוצת נתונים ב-Bigtable.
- bigtableBulkWriteMaxRequestSizeBytes: מספר הבייטים המקסימלי שייכלל בכל פעולת כתיבה באצווה ב-Bigtable.
- bigtableBulkWriteFlowControl: אם הערך מוגדר כ-true, מופעלת בקרה על זרימת נתונים של כתיבה בכמות גדולה, שתשתמש באות של השרת כדי לווסת את הכתיבות. ברירת המחדל היא: false.
הפעלת התבנית
המסוף
- עוברים לדף Dataflow Create job from template (יצירת משימה מתבנית). כניסה לדף Create job from template
- בשדה שם המשימה, מזינים שם ייחודי למשימה.
- אופציונלי: בשדה Regional endpoint (נקודת קצה אזורית), בוחרים ערך מהתפריט הנפתח. אזור ברירת המחדל הוא
us-central1.רשימת האזורים שבהם אפשר להריץ משימת Dataflow מופיעה במאמר מיקומי Dataflow.
- בתפריט הנפתח Dataflow template (תבנית של העברת נתונים), בוחרים באפשרות the BigQuery to Bigtable template.
- בשדות הפרמטרים שמופיעים, מזינים את ערכי הפרמטרים.
- לוחצים על הפעלת העבודה.
gcloud
במעטפת או בטרמינל, מריצים את התבנית:
gcloud dataflow flex-template run JOB_NAME \ --project=PROJECT_ID \ --region=REGION_NAME \ --template-file-gcs-location=gs://dataflow-templates-REGION_NAME/VERSION/flex/BigQuery_to_Bigtable \ --parameters \ readIdColumn=READ_COLUMN_ID,\ inputTableSpec=INPUT_TABLE_SPEC,\ bigtableWriteInstanceId=BIGTABLE_INSTANCE_ID,\ bigtableWriteTableId=BIGTABLE_TABLE_ID,\ bigtableWriteColumnFamily=BIGTABLE_COLUMN_FAMILY
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט שבו רוצים להריץ את משימת Dataflow Google Cloud -
JOB_NAME: שם ייחודי של המשימה לפי בחירתכם -
REGION_NAME: האזור שבו רוצים לפרוס את עבודת Dataflow, לדוגמה:us-central1 -
VERSION: הגרסה של התבנית שבה רוצים להשתמשאפשר להשתמש בערכים הבאים:
-
latestכדי להשתמש בגרסה העדכנית של התבנית, שזמינה בתיקיית ההורה ללא תאריך בדלי – gs://dataflow-templates-REGION_NAME/latest/ - שם הגרסה, כמו
2023-09-12-00_RC00, כדי להשתמש בגרסה ספציפית של התבנית, שאפשר למצוא אותה בתיקיית האב המתאימה עם התאריך בדלי – gs://dataflow-templates-REGION_NAME/
-
-
READ_COLUMN_ID: עמודת המזהה הייחודי ב-BigQuery. -
INPUT_TABLE_SPEC: השם של הטבלה ב-BigQuery. -
BIGTABLE_INSTANCE_ID: מזהה מופע Bigtable. -
BIGTABLE_TABLE_ID: מזהה הטבלה ב-Bigtable. -
BIGTABLE_COLUMN_FAMILY: קבוצת העמודות בטבלת Bigtable.
API
כדי להריץ את התבנית באמצעות API בארכיטקטורת REST, שולחים בקשת HTTP POST. מידע נוסף על ה-API ועל היקפי ההרשאות שלו זמין במאמר projects.templates.launch.
POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/flexTemplates:launch { "launch_parameter": { "jobName": "JOB_NAME", "parameters": { "readIdColumn": "READ_COLUMN_ID", "inputTableSpec": "INPUT_TABLE_SPEC", "bigtableWriteInstanceId": "BIGTABLE_INSTANCE_ID", "bigtableWriteTableId": "BIGTABLE_TABLE_ID", "bigtableWriteColumnFamily": "BIGTABLE_COLUMN_FAMILY" }, "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/BigQuery_to_Bigtable", } }
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט שבו רוצים להריץ את משימת Dataflow Google Cloud -
JOB_NAME: שם ייחודי של המשימה לפי בחירתכם -
LOCATION: האזור שבו רוצים לפרוס את עבודת Dataflow, לדוגמה:us-central1 -
VERSION: הגרסה של התבנית שבה רוצים להשתמשאפשר להשתמש בערכים הבאים:
-
latestכדי להשתמש בגרסה העדכנית של התבנית, שזמינה בתיקיית ההורה ללא תאריך בדלי – gs://dataflow-templates-REGION_NAME/latest/ - שם הגרסה, כמו
2023-09-12-00_RC00, כדי להשתמש בגרסה ספציפית של התבנית, שאפשר למצוא אותה בתיקיית האב המתאימה עם התאריך בדלי – gs://dataflow-templates-REGION_NAME/
-
-
READ_COLUMN_ID: עמודת המזהה הייחודי ב-BigQuery. -
INPUT_TABLE_SPEC: השם של הטבלה ב-BigQuery. -
BIGTABLE_INSTANCE_ID: מזהה מופע Bigtable. -
BIGTABLE_TABLE_ID: מזהה הטבלה ב-Bigtable. -
BIGTABLE_COLUMN_FAMILY: קבוצת העמודות בטבלת Bigtable.