תבנית Pub/Sub Subscription to BigQuery

התבנית Pub/Sub Subscription to BigQuery היא צינור סטרימינג שקורא הודעות בפורמט JSON ממינוי Pub/Sub וכותב אותן לטבלה ב-BigQuery. אתם יכולים להשתמש בתבנית כפתרון מהיר להעברת נתונים מ-Pub/Sub ל-BigQuery. התבנית קוראת הודעות בפורמט JSON מ-Pub/Sub וממירה אותן לרכיבי BigQuery.

לפני שמריצים צינור Dataflow לתרחיש הזה, כדאי לשקול אם מינוי ל-Pub/Sub BigQuery עם UDF עונה על הדרישות שלכם.

הדרישות לגבי צינורות עיבוד נתונים

  • השדה data בהודעות Pub/Sub צריך להיות בפורמט JSON, שמתואר במדריך ה-JSON הזה. לדוגמה, אפשר להוסיף הודעות עם ערכים בשדה data בפורמט {"k1":"v1", "k2":"v2"} לטבלת BigQuery עם שתי עמודות בשמות k1 ו-k2, עם סוג נתונים של מחרוזת.
  • טבלת הפלט חייבת להתקיים לפני הפעלת צינור העיבוד. סכימת הטבלה חייבת להתאים לאובייקטים של קלט ה-JSON.

פרמטרים של תבניות

פרמטרים נדרשים

  • outputTableSpec: מיקום טבלת הפלט ב-BigQuery, בפורמט <PROJECT_ID>:<DATASET_NAME>.<TABLE_NAME>.
  • inputSubscription: מינוי הקלט של Pub/Sub לקריאה, בפורמט projects/<PROJECT_ID>/subscriptions/<SUBSCRIPTION>.

פרמטרים אופציונליים

  • outputDeadletterTable: טבלה ב-BigQuery לשימוש בהודעות שלא מגיעות לטבלת הפלט, בפורמט <PROJECT_ID>:<DATASET_NAME>.<TABLE_NAME>. אם הטבלה לא קיימת, היא נוצרת במהלך ההרצה של צינור הנתונים. אם לא מציינים ערך, המערכת משתמשת בערך OUTPUT_TABLE_SPEC_error_records.
  • javascriptTextTransformGcsPath: ה-URI של Cloud Storage של קובץ ה-‎ .js שמגדיר את הפונקציה בהגדרת המשתמש (UDF) ב-JavaScript שבה רוצים להשתמש. לדוגמה, gs://my-bucket/my-udfs/my_file.js.
  • javascriptTextTransformFunctionName: השם של פונקציית JavaScript בהגדרת המשתמש (UDF) שבה רוצים להשתמש. לדוגמה, אם קוד הפונקציה ב-JavaScript הוא myTransform(inJson) { /*...do stuff...*/ }, אז שם הפונקציה הוא myTransform. דוגמאות לפונקציות מוגדרות על ידי המשתמש (UDF) ב-JavaScript זמינות במאמר UDF Examples (https://github.com/GoogleCloudPlatform/DataflowTemplates#udf-examples).
  • javascriptTextTransformReloadIntervalMinutes: הגדרה של המרווח שבו עובדים יכולים לבדוק אם יש שינויים בפונקציות UDF של JavaScript כדי לטעון מחדש את הקבצים. ברירת המחדל היא 0.

פונקציה בהגדרת המשתמש

אפשר גם להרחיב את התבנית הזו על ידי כתיבת פונקציה בהגדרת המשתמש (UDF). התבנית קוראת ל-UDF עבור כל רכיב קלט. מטענים ייעודיים של רכיבים עוברים סריאליזציה כמחרוזות JSON. למידע נוסף, ראו יצירת פונקציות מוגדרות על ידי המשתמש לתבניות Dataflow.

מפרט הפונקציה

המאפיינים של פונקציית UDF:

  • קלט: שדה הנתונים של הודעת Pub/Sub, שעבר סריאליזציה כמחרוזת JSON.
  • פלט: מחרוזת JSON שתואמת לסכימה של טבלת היעד ב-BigQuery.
  • הפעלת התבנית

    המסוף

    1. עוברים לדף Dataflow Create job from template (יצירת משימה מתבנית).
    2. כניסה לדף Create job from template
    3. בשדה שם המשימה, מזינים שם ייחודי למשימה.
    4. אופציונלי: בשדה Regional endpoint (נקודת קצה אזורית), בוחרים ערך מהתפריט הנפתח. אזור ברירת המחדל הוא us-central1.

      רשימת האזורים שבהם אפשר להריץ משימת Dataflow מופיעה במאמר מיקומי Dataflow.

    5. בתפריט הנפתח Dataflow template (תבנית של העברת נתונים), בוחרים באפשרות the Pub/Sub Subscription to BigQuery template.
    6. בשדות הפרמטרים שמופיעים, מזינים את ערכי הפרמטרים.
    7. אופציונלי: כדי לעבור מעיבוד של כל נתון בדיוק פעם אחת אל מצב סטרימינג של כל נתון לפחות פעם אחת, בוחרים באפשרות לפחות פעם אחת.
    8. לוחצים על הפעלת העבודה.

    gcloud

    במעטפת או בטרמינל, מריצים את התבנית:

    gcloud dataflow jobs run JOB_NAME \
        --gcs-location gs://dataflow-templates-REGION_NAME/VERSION/PubSub_Subscription_to_BigQuery \
        --region REGION_NAME \
        --staging-location STAGING_LOCATION \
        --parameters \
    inputSubscription=projects/PROJECT_ID/subscriptions/SUBSCRIPTION_NAME,\
    outputTableSpec=PROJECT_ID:DATASET.TABLE_NAME,\
    outputDeadletterTable=PROJECT_ID:DATASET.TABLE_NAME

    מחליפים את מה שכתוב בשדות הבאים:

    • 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/
    • STAGING_LOCATION: המיקום של קבצים מקומיים להעברה (לדוגמה, gs://your-bucket/staging)
    • SUBSCRIPTION_NAME: השם של המינוי שלכם ל-Pub/Sub
    • DATASET: מערך הנתונים שלכם ב-BigQuery
    • TABLE_NAME: שם הטבלה ב-BigQuery

    API

    כדי להריץ את התבנית באמצעות API בארכיטקטורת REST, שולחים בקשת HTTP POST. מידע נוסף על ה-API ועל היקפי ההרשאות שלו זמין במאמר projects.templates.launch.

    POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/templates:launch?gcsPath=gs://dataflow-templates-LOCATION/VERSION/PubSub_Subscription_to_BigQuery
    {
       "jobName": "JOB_NAME",
       "parameters": {
           "inputSubscription": "projects/PROJECT_ID/subscriptions/SUBSCRIPTION_NAME",
           "outputTableSpec": "PROJECT_ID:DATASET.TABLE_NAME"
       },
       "environment": {
           "ipConfiguration": "WORKER_IP_UNSPECIFIED",
           "additionalExperiments": []
       },
    }

    מחליפים את מה שכתוב בשדות הבאים:

    • 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/
    • STAGING_LOCATION: המיקום של קבצים מקומיים להעברה (לדוגמה, gs://your-bucket/staging)
    • SUBSCRIPTION_NAME: השם של המינוי שלכם ל-Pub/Sub
    • DATASET: מערך הנתונים שלכם ב-BigQuery
    • TABLE_NAME: שם הטבלה ב-BigQuery

    המאמרים הבאים