תבנית Pub/Sub to Java Database Connectivity (JDBC) היא צינור עיבוד נתונים של סטרימינג שקולט נתונים ממנוי Pub/Sub קיים כמחרוזות JSON, וכותב את הרשומות שמתקבלות ל-JDBC.
הדרישות לגבי צינורות עיבוד נתונים
- המינוי ל-Pub/Sub צריך להתקיים לפני שמריצים את צינור הנתונים.
- מקור ה-JDBC צריך להתקיים לפני שמריצים את צינור הנתונים.
- נושא להודעות ללא מוצא של הפלט ב-Pub/Sub צריך להתקיים לפני שמריצים את צינור הנתונים.
פרמטרים של תבניות
| פרמטר | תיאור |
|---|---|
driverClassName |
שם המחלקה של מנהל ההתקן של JDBC. לדוגמה, com.mysql.jdbc.Driver. |
connectionUrl |
מחרוזת כתובת ה-URL של חיבור JDBC. לדוגמה, jdbc:mysql://some-host:3306/sampledb.
אפשר להעביר את הערך הזה כמחרוזת שמוצפנת באמצעות מפתח Cloud KMS ואז מקודדת ב-Base64.
מסירים את התווים של הרווחים מהמחרוזת שמקודדת ב-Base64. |
driverJars |
נתיבי Cloud Storage מופרדים בפסיקים למנהלי התקנים של JDBC. לדוגמה, gs://your-bucket/driver_jar1.jar,gs://your-bucket/driver_jar2.jar. |
username |
אופציונלי: שם המשתמש שישמש לחיבור JDBC. אפשר להעביר את הערך הזה מוצפן באמצעות מפתח Cloud KMS כמחרוזת בקידוד Base64. |
password |
אופציונלי: הסיסמה שתשמש לחיבור JDBC. אפשר להעביר את הערך הזה מוצפן באמצעות מפתח Cloud KMS כמחרוזת בקידוד Base64. |
connectionProperties |
אופציונלי: מחרוזת מאפיינים לשימוש בחיבור JDBC. הפורמט של המחרוזת צריך להיות [propertyName=property;]*. לדוגמה, unicode=true;characterEncoding=UTF-8. |
statement |
הצהרה להרצה מול מסד הנתונים. בהצהרה צריך לציין את שמות העמודות בטבלה, בכל סדר שהוא. רק הערכים של שמות העמודות שצוינו נקראים מ-JSON ומוסיפים אותם להצהרה. לדוגמה, INSERT INTO tableName (column1, column2) VALUES (?,?) |
inputSubscription |
מינוי הקלט של Pub/Sub שממנו יתבצע הקריאה, בפורמט projects/<project>/subscriptions/<subscription>. |
outputDeadletterTopic |
נושא Pub/Sub להעברת הודעות שלא ניתן למסור. לדוגמה, projects/<project-id>/topics/<topic-name>. |
KMSEncryptionKey |
אופציונלי: מפתח הצפנה של Cloud KMS לפענוח שם המשתמש, הסיסמה ומחרוזת החיבור. אם מועבר מפתח Cloud KMS, צריך להעביר את שם המשתמש, הסיסמה ומחרוזת החיבור כשהם מוצפנים. |
extraFilesToStage |
נתיבים ב-Cloud Storage או סודות ב-Secret Manager שמופרדים בפסיקים, לקבצים שרוצים להכין להעברה בעובד. הקבצים האלה יישמרו בספרייה /extra_files בכל עובד. לדוגמה, gs://<my-bucket>/file.txt,projects/<project-id>/secrets/<secret-id>/versions/<version-id>. |
הפעלת התבנית
המסוף
- עוברים לדף Dataflow Create job from template (יצירת משימה מתבנית). כניסה לדף Create job from template
- בשדה שם המשימה, מזינים שם ייחודי למשימה.
- אופציונלי: בשדה Regional endpoint (נקודת קצה אזורית), בוחרים ערך מהתפריט הנפתח. אזור ברירת המחדל הוא
us-central1.רשימת האזורים שבהם אפשר להריץ משימת Dataflow מופיעה במאמר מיקומי Dataflow.
- בתפריט הנפתח Dataflow template (תבנית של העברת נתונים), בוחרים באפשרות the Pub/Sub to JDBC template.
- בשדות הפרמטרים שמופיעים, מזינים את ערכי הפרמטרים.
- לוחצים על הפעלת העבודה.
gcloud
במעטפת או בטרמינל, מריצים את התבנית:
gcloud dataflow flex-template run JOB_NAME \ --template-file-gcs-location gs://dataflow-templates-REGION_NAME/VERSION/flex/Pubsub_to_Jdbc \ --region REGION_NAME \ --parameters \ driverClassName=DRIVER_CLASS_NAME,\ connectionUrl=JDBC_CONNECTION_URL,\ driverJars=DRIVER_PATHS,\ username=CONNECTION_USERNAME,\ password=CONNECTION_PASSWORD,\ connectionProperties=CONNECTION_PROPERTIES,\ statement=SQL_STATEMENT,\ inputSubscription=INPUT_SUBSCRIPTION,\ outputDeadletterTopic=OUTPUT_DEADLETTER_TOPIC,\ KMSEncryptionKey=KMS_ENCRYPTION_KEY
מחליפים את מה שכתוב בשדות הבאים:
-
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 -
DRIVER_CLASS_NAME: שם המחלקה של ה-driver -
JDBC_CONNECTION_URL: כתובת ה-URL של חיבור JDBC -
DRIVER_PATHS: נתיבי Cloud Storage של מנהלי התקנים של JDBC, מופרדים באמצעות פסיקים -
CONNECTION_USERNAME: שם המשתמש של חיבור ה-JDBC -
CONNECTION_PASSWORD: הסיסמה לחיבור JDBC -
CONNECTION_PROPERTIES: מאפייני החיבור של JDBC, אם יש צורך -
SQL_STATEMENT: הצהרת ה-SQL שתופעל על מסד הנתונים -
INPUT_SUBSCRIPTION: מינוי הקלט של Pub/Sub שממנו יתבצע קריאה -
OUTPUT_DEADLETTER_TOPIC: Pub/Sub להעברת הודעות שלא ניתן למסור -
KMS_ENCRYPTION_KEY: מפתח ההצפנה של Cloud KMS
API
כדי להריץ את התבנית באמצעות API בארכיטקטורת REST, שולחים בקשת HTTP POST. מידע נוסף על ה-API ועל היקפי ההרשאות שלו זמין במאמר projects.templates.launch.
POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/flexTemplates:launch { "jobName": "JOB_NAME", "parameters": { "driverClassName": "DRIVER_CLASS_NAME", "connectionUrl": "JDBC_CONNECTION_URL", "driverJars": "DRIVER_PATHS", "username": "CONNECTION_USERNAME", "password": "CONNECTION_PASSWORD", "connectionProperties": "CONNECTION_PROPERTIES", "statement": "SQL_STATEMENT", "inputSubscription": "INPUT_SUBSCRIPTION", "outputDeadletterTopic": "OUTPUT_DEADLETTER_TOPIC", "KMSEncryptionKey":"KMS_ENCRYPTION_KEY" }, "environment": { "zone": "us-central1-f" }, }
מחליפים את מה שכתוב בשדות הבאים:
-
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 -
DRIVER_CLASS_NAME: שם המחלקה של ה-driver -
JDBC_CONNECTION_URL: כתובת ה-URL של חיבור JDBC -
DRIVER_PATHS: נתיבי Cloud Storage של מנהלי התקנים של JDBC, מופרדים באמצעות פסיקים -
CONNECTION_USERNAME: שם המשתמש של חיבור ה-JDBC -
CONNECTION_PASSWORD: הסיסמה לחיבור JDBC -
CONNECTION_PROPERTIES: מאפייני החיבור של JDBC, אם יש צורך -
SQL_STATEMENT: הצהרת ה-SQL שתופעל על מסד הנתונים -
INPUT_SUBSCRIPTION: מינוי הקלט של Pub/Sub שממנו יתבצע קריאה -
OUTPUT_DEADLETTER_TOPIC: Pub/Sub להעברת הודעות שלא ניתן למסור -
KMS_ENCRYPTION_KEY: מפתח ההצפנה של Cloud KMS