הפעלת תבניות קלאסיות

אחרי שיוצרים את תבנית Dataflow ומכינים אותה להפעלה, מפעילים את התבנית באמצעות מסוף Google Cloud, API בארכיטקטורת REST או Google Cloud CLI. Google Cloud אפשר לפרוס משימות של תבניות Dataflow מסביבות רבות, כולל סביבת App Engine סטנדרטית, פונקציות Cloud Run וסביבות מוגבלות אחרות.

שימוש במסוף Google Cloud

אתם יכולים להשתמש במסוף Google Cloud כדי להריץ תבניות Dataflow ש-Google מספקת ותבניות בהתאמה אישית.

תבניות ש-Google סיפקה

כדי להפעיל תבנית ש-Google סיפקה:

  1. נכנסים לדף Dataflow במסוף Google Cloud .
  2. כניסה לדף Dataflow
  3. לוחצים על CREATE JOB FROM TEMPLATE.
  4.  לחצן ליצירת משימה מתבנית במסוףGoogle Cloud
  5. בתפריט הנפתח Dataflow template (תבנית Dataflow), בוחרים את התבנית שסופקה על ידי Google שרוצים להפעיל.
  6. טופס להרצת תבנית WordCount
  7. מזינים שם למשרה בשדה Job Name.
  8. מזינים את ערכי הפרמטר בשדות הפרמטרים שמוצגים. אם משתמשים בתבנית שסופקה על ידי Google, אין צורך בקטע פרמטרים נוספים.
  9. לוחצים על הרצת משימה.

תבניות מותאמות אישית

כדי להפעיל תבנית בהתאמה אישית:

  1. נכנסים לדף Dataflow במסוף Google Cloud .
  2. כניסה לדף Dataflow
  3. לוחצים על CREATE JOB FROM TEMPLATE (יצירת משימה מתבנית).
  4.  לחצן ליצירת משימה מתבנית במסוףGoogle Cloud
  5. בתפריט הנפתח תבנית של Dataflow, בוחרים באפשרות תבנית בהתאמה אישית.
  6. טופס הפעלה של תבנית בהתאמה אישית
  7. מזינים שם למשרה בשדה Job Name.
  8. מזינים את הנתיב של Cloud Storage לקובץ התבנית בשדה template Cloud Storage path (נתיב התבנית ב-Cloud Storage).
  9. אם התבנית דורשת פרמטרים, לוחצים על הוספת פרמטר בקטע פרמטרים נוספים. מזינים את השם והערך של הפרמטר. חוזרים על השלב הזה לכל פרמטר שצריך.
  10. לוחצים על הרצת משימה.

שימוש ב-API ל-REST

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

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

יצירת משימת אצווה של תבנית בהתאמה אישית

בדוגמה הזו, בקשת projects.locations.templates.launch יוצרת משימה באצווה מתבנית שקוראת קובץ טקסט וכותבת קובץ טקסט של פלט. אם הבקשה מצליחה, גוף התגובה יכיל מופע של LaunchTemplateResponse.

משנים את הערכים הבאים:

  • מחליפים את YOUR_PROJECT_ID במזהה הפרויקט.
  • מחליפים את LOCATION באזור Dataflow לבחירתכם.
  • מחליפים את JOB_NAME בשם של המשימה לבחירתכם.
  • מחליפים את YOUR_BUCKET_NAME בשם הקטגוריה שלכם ב-Cloud Storage.
  • מגדירים את gcsPath למיקום של קובץ התבנית ב-Cloud Storage.
  • מגדירים את parameters לרשימה של צמדי מפתח/ערך.
  • מגדירים את tempLocation למיקום שיש לכם הרשאת כתיבה בו. הערך הזה נדרש כדי להפעיל תבניות שסופקו על ידי Google.
    POST https://dataflow.googleapis.com/v1b3/projects/YOUR_PROJECT_ID/locations/LOCATION/templates:launch?gcsPath=gs://YOUR_BUCKET_NAME/templates/TemplateName
    {
        "jobName": "JOB_NAME",
        "parameters": {
            "inputFile" : "gs://YOUR_BUCKET_NAME/input/my_input.txt",
            "output": "gs://YOUR_BUCKET_NAME/output/my_output"
        },
        "environment": {
            "tempLocation": "gs://YOUR_BUCKET_NAME/temp",
            "zone": "us-central1-f"
        }
    }

יצירת תבנית מותאמת אישית למשימת סטרימינג

בדוגמה הזו, בקשת projects.locations.templates.launch יוצרת משימת סטרימינג מתבנית קלאסית שקוראת ממינוי Pub/Sub וכותבת לטבלה ב-BigQuery. אם רוצים להפעיל תבנית Flex, צריך להשתמש במקום זאת ב-projects.locations.flexTemplates.launch. התבנית לדוגמה היא תבנית ש-Google סיפקה. אפשר לשנות את הנתיב בתבנית כך שיצביע על תבנית מותאמת אישית. אותה לוגיקה משמשת להפעלת תבניות שסופקו על ידי Google ותבניות מותאמות אישית. בדוגמה הזו, הטבלה ב-BigQuery כבר צריכה להתקיים עם הסכימה המתאימה. אם הפעולה בוצעה ללא שגיאות, גוף התגובה יכיל מופע של LaunchTemplateResponse.

משנים את הערכים הבאים:

  • מחליפים את YOUR_PROJECT_ID במזהה הפרויקט.
  • מחליפים את LOCATION באזור Dataflow לבחירתכם.
  • מחליפים את JOB_NAME בשם של המשימה לבחירתכם.
  • מחליפים את YOUR_BUCKET_NAME בשם של הקטגוריה שלכם ב-Cloud Storage.
  • מחליפים את GCS_PATH במיקום של קובץ התבנית ב-Cloud Storage. המיקום צריך להתחיל ב-gs://‎
  • מגדירים את parameters לרשימה של צמדי מפתח/ערך. הפרמטרים שמופיעים ברשימה הם ספציפיים לדוגמה הזו של התבנית. אם אתם משתמשים בתבנית מותאמת אישית, משנים את הפרמטרים לפי הצורך. אם אתם משתמשים בתבנית לדוגמה, מחליפים את המשתנים הבאים.
    • מחליפים את YOUR_SUBSCRIPTION_NAME בשם המינוי שלכם ל-Pub/Sub.
    • מחליפים את YOUR_DATASET במערך הנתונים ב-BigQuery ואת YOUR_TABLE_NAME בשם הטבלה ב-BigQuery.
  • מגדירים את tempLocation למיקום שיש לכם הרשאת כתיבה בו. הערך הזה נדרש כדי להפעיל תבניות שסופקו על ידי Google.
    POST https://dataflow.googleapis.com/v1b3/projects/YOUR_PROJECT_ID/locations/LOCATION/templates:launch?gcsPath=GCS_PATH
    {
        "jobName": "JOB_NAME",
        "parameters": {
            "inputSubscription": "projects/YOUR_PROJECT_ID/subscriptions/YOUR_SUBSCRIPTION_NAME",
            "outputTableSpec": "YOUR_PROJECT_ID:YOUR_DATASET.YOUR_TABLE_NAME"
        },
        "environment": {
            "tempLocation": "gs://YOUR_BUCKET_NAME/temp",
            "zone": "us-central1-f"
        }
    }

עדכון של משימת סטרימינג של תבנית בהתאמה אישית

בדוגמה הזו של בקשת projects.locations.templates.launch מוצג איך לעדכן משימת סטרימינג של תבנית. אם רוצים לעדכן תבנית Flex, צריך להשתמש במקום זאת ב-projects.locations.flexTemplates.launch.

  1. מריצים את דוגמה 2: יצירת משימת סטרימינג של תבנית בהתאמה אישית כדי להתחיל משימת סטרימינג של תבנית.
  2. שולחים את בקשת ה-HTTP POST הבאה, עם הערכים ששונו:
    • מחליפים את YOUR_PROJECT_ID במזהה הפרויקט.
    • מחליפים את LOCATION באזור של Dataflow שבו אתם מעדכנים את הג'וב.
    • מחליפים את JOB_NAME בשם המדויק של המשרה שרוצים לעדכן.
    • מחליפים את GCS_PATH במיקום של קובץ התבנית ב-Cloud Storage. המיקום צריך להתחיל ב-gs://‎
    • מגדירים את parameters לרשימה של צמדי מפתח/ערך. הפרמטרים שמופיעים ברשימה הם ספציפיים לדוגמה הזו של התבנית. אם אתם משתמשים בתבנית מותאמת אישית, משנים את הפרמטרים לפי הצורך. אם אתם משתמשים בתבנית לדוגמה, מחליפים את המשתנים הבאים.
      • מחליפים את YOUR_SUBSCRIPTION_NAME בשם המינוי שלכם ל-Pub/Sub.
      • מחליפים את YOUR_DATASET במערך הנתונים ב-BigQuery ואת YOUR_TABLE_NAME בשם הטבלה ב-BigQuery.
    • משתמשים בפרמטר environment כדי לשנות הגדרות סביבה, כמו סוג המכונה. בדוגמה הזו נעשה שימוש בסוג המכונה n2-highmem-2, שיש לה יותר זיכרון ומעבד לכל עובד מאשר לסוג המכונה שמוגדר כברירת מחדל.
        POST https://dataflow.googleapis.com/v1b3/projects/YOUR_PROJECT_ID/locations/LOCATION/templates:launch?gcsPath=GCS_PATH
        {
            "jobName": "JOB_NAME",
            "parameters": {
                "inputSubscription": "projects/YOUR_PROJECT_ID/subscriptions/YOUR_TOPIC_NAME",
                "outputTableSpec": "YOUR_PROJECT_ID:YOUR_DATASET.YOUR_TABLE_NAME"
            },
            "environment": {
                "machineType": "n2-highmem-2"
            },
            "update": true
        }
    
  3. ניגשים אל ממשק המעקב של Dataflow ומוודאים שנוצרה משימה חדשה עם אותו שם. הסטטוס של המשרה הזו הוא עודכן.

שימוש בספריות הלקוח של Google API

מומלץ להשתמש בספריות הלקוח של Google API כדי לבצע בקלות קריאות ל-Dataflow REST APIs. בדוגמה הזו נעשה שימוש ב-Google API Client Library for Python.

בדוגמה הזו, צריך להגדיר את המשתנים הבאים:

  • project: מוגדר למזהה הפרויקט.
  • job: מוגדר לשם ייחודי של משימה לפי בחירתכם.
  • template: הגדרה למיקום של קובץ התבנית ב-Cloud Storage.
  • parameters: מוגדר כמילון עם פרמטרים של התבנית.

כדי להגדיר את הפרמטר region, צריך לכלול את הפרמטר location.

from googleapiclient.discovery import build

# project = 'your-gcp-project'
# job = 'unique-job-name'
# template = 'gs://dataflow-templates/latest/Word_Count'
# parameters = {
#     'inputFile': 'gs://dataflow-samples/shakespeare/kinglear.txt',
#     'output': 'gs://<your-gcs-bucket>/wordcount/outputs',
# }

dataflow = build("dataflow", "v1b3")
request = (
    dataflow.projects()
    .templates()
    .launch(
        projectId=project,
        gcsPath=template,
        body={
            "jobName": job,
            "parameters": parameters,
        },
    )
)

response = request.execute()

מידע נוסף על האפשרויות הזמינות מופיע במאמר בנושא שיטת projects.locations.templates.launch בהפניית API של Dataflow REST.

שימוש ב-CLI של gcloud

אפשר להריץ ב-CLI של gcloud תבנית בהתאמה אישית או תבנית שסופקה על ידי Google באמצעות הפקודה gcloud dataflow jobs run. דוגמאות להרצת תבניות ש-Google סיפקה מתועדות בדף התבניות ש-Google סיפקה.

בדוגמאות הבאות של תבניות בהתאמה אישית, מגדירים את הערכים הבאים:

  • מחליפים את JOB_NAME בשם של המשימה לבחירתכם.
  • מחליפים את YOUR_BUCKET_NAME בשם של הקטגוריה שלכם ב-Cloud Storage.
  • מגדירים את --gcs-location למיקום של קובץ התבנית ב-Cloud Storage.
  • מגדירים את --parameters לרשימת הפרמטרים המופרדים בפסיקים להעברה לעבודה. אסור להוסיף רווחים בין הפסיקים לערכים.
  • כדי למנוע ממכונות וירטואליות לקבל מפתחות SSH ששמורים במטא-נתונים של הפרויקט, משתמשים בדגל additional-experiments עם אפשרות השירות block_project_ssh_keys: --additional-experiments=block_project_ssh_keys.

יצירת משימת אצווה של תבנית בהתאמה אישית

בדוגמה הזו נוצרת משימה באצווה מתבנית שקוראת קובץ טקסט וכותבת קובץ טקסט של פלט.

    gcloud dataflow jobs run JOB_NAME \
        --gcs-location gs://YOUR_BUCKET_NAME/templates/MyTemplate \
        --parameters inputFile=gs://YOUR_BUCKET_NAME/input/my_input.txt,output=gs://YOUR_BUCKET_NAME/output/my_output

התגובה לבקשה מוחזרת בפורמט הבא.

    id: 2016-10-11_17_10_59-1234530157620696789
    projectId: YOUR_PROJECT_ID
    type: JOB_TYPE_BATCH

יצירת תבנית מותאמת אישית למשימת סטרימינג

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

    gcloud dataflow jobs run JOB_NAME \
        --gcs-location gs://YOUR_BUCKET_NAME/templates/MyTemplate \
        --parameters topic=projects/project-identifier/topics/resource-name,table=my_project:my_dataset.my_table_name

התגובה לבקשה מוחזרת בפורמט הבא.

    id: 2016-10-11_17_10_59-1234530157620696789
    projectId: YOUR_PROJECT_ID
    type: JOB_TYPE_STREAMING

לרשימה מלאה של דגלים לפקודה gcloud dataflow jobs run, ראו את ה-CLI של gcloud.

מעקב ופתרון בעיות

ממשק המעקב של Dataflow מאפשר לעקוב אחרי משימות Dataflow. אם משימה נכשלת, אפשר למצוא טיפים לפתרון בעיות, אסטרטגיות לניפוי באגים וקטלוג של שגיאות נפוצות במדריך פתרון בעיות בצינור הנתונים.