התבנית הזו יוצרת פייפליין סטרימינג שפועל עם MongoDB סנכרון שינויים בזרמי נתונים. כדי להשתמש בתבנית הזו, צריך לפרסם את נתוני הסטרים של השינויים ב-Pub/Sub. הצינור קורא את רשומות ה-JSON מ-Pub/Sub וכותב אותן ל-BigQuery. הפורמט של הרשומות שנכתבות ב-BigQuery זהה לפורמט של תבנית האצווה של MongoDB ל-BigQuery.
הדרישות לגבי צינורות עיבוד נתונים
- מערך הנתונים ב-BigQuery צריך להתקיים.
- צריכה להיות גישה למופע המקור של MongoDB ממכונות העובדים של Dataflow.
- כדי לקרוא את סנכרון שינויים בזרמי נתונים, צריך ליצור נושא Pub/Sub. בזמן שהצינור פועל, מקשיבים לאירועים של סימון נתונים שהשתנו (CDC) בזרם השינויים של MongoDB ומפרסמים אותם ב-Pub/Sub כרשומות JSON. מידע נוסף על פרסום הודעות ב-Pub/Sub
- התבנית הזו משתמשת ב-MongoDB סנכרון שינויים בזרמי נתונים. אין תמיכה בסימון נתונים שהשתנו (CDC) ב-BigQuery.
פרמטרים של תבניות
פרמטרים נדרשים
- mongoDbUri: ה-URI של חיבור MongoDB בפורמט
mongodb+srv://:@.. - database: מסד נתונים ב-MongoDB שממנו יתבצע קריאת האוסף. לדוגמה,
my-db. - collection: השם של האוסף בתוך מסד הנתונים של MongoDB. לדוגמה,
my-collection. - userOption:
FLATTEN,JSONאוNONE. FLATTENמשטיח את המסמכים לרמה אחת. JSONמאחסן את המסמך בפורמט JSON של BigQuery. NONEשומר את המסמך כולו כמחרוזת בפורמט JSON. ברירת המחדל היא: NONE. - inputTopic: נושא הקלט ב-Pub/Sub שממנו קוראים, בפורמט
projects/<PROJECT_ID>/topics/<TOPIC_NAME>. - outputTableSpec: הטבלה ב-BigQuery שאליה ייכתבו הנתונים. לדוגמה,
bigquery-project:dataset.output_table.
פרמטרים אופציונליים
- useStorageWriteApiAtLeastOnce: כשמשתמשים ב-Storage Write API, המאפיין הזה מציין את סמנטיקת הכתיבה. כדי להשתמש בסמנטיקה של 'לפחות פעם אחת' (https://beam.apache.org/documentation/io/built-in/google-bigquery/#at-least-once-semantics), מגדירים את הפרמטר הזה לערך
true. כדי להשתמש בסמנטיקה של מסירה בדיוק פעם אחת, צריך להגדיר את הפרמטר לערךfalse. הפרמטר הזה רלוונטי רק אם הערך שלuseStorageWriteApiהואtrue. ערך ברירת המחדל הואfalse. - KMSEncryptionKey: מפתח הצפנה של Cloud KMS לפענוח מחרוזת החיבור של URI של MongoDB. אם מועבר מפתח Cloud KMS, מחרוזת החיבור של mongodb uri חייבת להיות מוצפנת. לדוגמה,
projects/your-project/locations/global/keyRings/your-keyring/cryptoKeys/your-key. - filter: מסנן Bson בפורמט JSON. לדוגמה,
{ "val": { $gt: 0, $lt: 9 }}. - 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). - numStorageWriteApiStreams: כשמשתמשים ב-Storage Write API, מציינים את מספר זרמי הכתיבה. אם
useStorageWriteApiהואtrueו-useStorageWriteApiAtLeastOnceהואfalse, חובה להגדיר את הפרמטר הזה. ברירת המחדל היא 0. - storageWriteApiTriggeringFrequencySec: כשמשתמשים ב-Storage Write API, מציינים את תדירות ההפעלה בשניות. אם
useStorageWriteApiהואtrueו-useStorageWriteApiAtLeastOnceהואfalse, חובה להגדיר את הפרמטר הזה. - bigQuerySchemaPath: נתיב Cloud Storage של סכימת ה-JSON של BigQuery. לדוגמה,
gs://your-bucket/your-schema.json. - javascriptDocumentTransformGcsPath: ה-URI של Cloud Storage של קובץ
.jsשמגדיר את הפונקציה בהגדרת המשתמש (UDF) ב-JavaScript שבה רוצים להשתמש. לדוגמה,gs://your-bucket/your-transforms/*.js. - javascriptDocumentTransformFunctionName: השם של פונקציית JavaScript בהגדרת המשתמש (UDF) שבה רוצים להשתמש. לדוגמה, אם קוד הפונקציה של JavaScript הוא
myTransform(inJson) { /*...do stuff...*/ }, אז שם הפונקציה הוא myTransform. דוגמאות ל-UDF ב-JavaScript זמינות במאמר UDF Examples (https://github.com/GoogleCloudPlatform/DataflowTemplates#udf-examples). לדוגמה,transform.
פונקציה בהגדרת המשתמש
אפשר גם להרחיב את התבנית הזו על ידי כתיבת פונקציה בהגדרת המשתמש (UDF) ב-JavaScript. התבנית קוראת ל-UDF לכל רכיב קלט. מטענים ייעודיים של רכיבים עוברים סריאליזציה כמחרוזות JSON.
כדי להשתמש ב-UDF, מעלים את קובץ ה-JavaScript ל-Cloud Storage ומגדירים את פרמטרים התבנית הבאים:
| פרמטר | תיאור |
|---|---|
javascriptDocumentTransformGcsPath |
המיקום של קובץ ה-JavaScript ב-Cloud Storage. |
javascriptDocumentTransformFunctionName |
השם של פונקציית JavaScript. |
מידע נוסף זמין במאמר בנושא יצירת פונקציות מוגדרות על ידי המשתמש לתבניות Dataflow.
מפרט הפונקציה
המאפיינים של פונקציית UDF:
הרצת התבנית
המסוף
- עוברים לדף Create job from template (יצירת משימה מתבנית) ב-Dataflow. כניסה לדף Create job from template
- בשדה שם המשימה, מזינים שם ייחודי למשימה.
- אופציונלי: בשדה Regional endpoint (נקודת קצה אזורית), בוחרים ערך מהתפריט הנפתח. אזור ברירת המחדל הוא
us-central1.רשימה של אזורים שבהם אפשר להריץ משימת Dataflow מופיעה במאמר מיקומי Dataflow.
- בתפריט הנפתח Dataflow template (תבנית Dataflow), בוחרים את התבנית MongoDB (CDC) to BigQuery (מ-MongoDB (CDC) ל-BigQuery).
- בשדות הפרמטרים שמופיעים, מזינים את ערכי הפרמטרים.
- לוחצים על הפעלת העבודה.
gcloud
במעטפת או בטרמינל, מריצים את התבנית:
gcloud dataflow flex-template run JOB_NAME \ --project=PROJECT_ID \ --region=REGION_NAME \ --template-file-gcs-location=gs://dataflow-templates/VERSION/flex/MongoDB_to_BigQuery_CDC \ --parameters \ outputTableSpec=OUTPUT_TABLE_SPEC,\ mongoDbUri=MONGO_DB_URI,\ database=DATABASE,\ collection=COLLECTION,\ userOption=USER_OPTION,\ inputTopic=INPUT_TOPIC
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט שבו רוצים להריץ את משימת Google Cloud Dataflow -
JOB_NAME: שם ייחודי של המשימה לפי בחירתכם -
REGION_NAME: האזור שבו רוצים לפרוס את עבודת Dataflow, לדוגמה:us-central1 -
VERSION: הגרסה של התבנית שרוצים להשתמש בהאפשר להשתמש בערכים הבאים:
latestכדי להשתמש בגרסה העדכנית של התבנית, שזמינה בתיקיית ההורה ללא תאריך בדלי – gs://dataflow-templates/latest/- שם הגרסה, כמו
2023-09-12-00_RC00, כדי להשתמש בגרסה ספציפית של התבנית. אפשר למצוא את הגרסה הזו בתיקיית ההורה המתאימה עם התאריך בדלי – gs://dataflow-templates/
-
OUTPUT_TABLE_SPEC: שם טבלת היעד ב-BigQuery. -
MONGO_DB_URI: מזהה ה-URI של MongoDB. -
DATABASE: מסד הנתונים של MongoDB. -
COLLECTION: האוסף של MongoDB. -
USER_OPTION: FLATTEN, JSON או NONE. -
INPUT_TOPIC: נושא הקלט של Pub/Sub.
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": { "inputTableSpec": "INPUT_TABLE_SPEC", "mongoDbUri": "MONGO_DB_URI", "database": "DATABASE", "collection": "COLLECTION", "userOption": "USER_OPTION", "inputTopic": "INPUT_TOPIC" }, "containerSpecGcsPath": "gs://dataflow-templates/VERSION/flex/MongoDB_to_BigQuery_CDC", } }
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט שבו רוצים להריץ את משימת Google Cloud Dataflow -
JOB_NAME: שם ייחודי של המשימה לפי בחירתכם -
LOCATION: האזור שבו רוצים לפרוס את עבודת Dataflow, לדוגמה:us-central1 -
VERSION: הגרסה של התבנית שרוצים להשתמש בהאפשר להשתמש בערכים הבאים:
latestכדי להשתמש בגרסה העדכנית של התבנית, שזמינה בתיקיית ההורה ללא תאריך בדלי – gs://dataflow-templates/latest/- שם הגרסה, כמו
2023-09-12-00_RC00, כדי להשתמש בגרסה ספציפית של התבנית. אפשר למצוא את הגרסה הזו בתיקיית ההורה המתאימה עם התאריך בדלי – gs://dataflow-templates/
-
OUTPUT_TABLE_SPEC: שם טבלת היעד ב-BigQuery. -
MONGO_DB_URI: מזהה ה-URI של MongoDB. -
DATABASE: מסד הנתונים של MongoDB. -
COLLECTION: האוסף של MongoDB. -
USER_OPTION: FLATTEN, JSON או NONE. -
INPUT_TOPIC: נושא הקלט של Pub/Sub.
המאמרים הבאים
- מידע נוסף על תבניות Dataflow
- כאן אפשר לעיין ברשימת התבניות ש-Google סיפקה.