הפסקת צינור עיבוד נתונים פעיל של Dataflow

כדי לעצור עבודת Dataflow, אפשר להשתמש במסוףGoogle Cloud , ב-Cloud Shell, בטרמינל מקומי שמותקן בו Google Cloud CLI או ב-Dataflow API בארכיטקטורת REST.

אפשר להפסיק משימת Dataflow באחת משלוש הדרכים הבאות:

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

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

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

אחרי שמבטלים עבודה, אי אפשר להפעיל אותה מחדש. אם אתם לא משתמשים ב-Flex Templates, אתם יכולים לשכפל את צינור העיבוד שבוטל ולהתחיל עבודה חדשה מצינור העיבוד המשוכפל.

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

אם יש לכם צינור מורכב, כדאי ליצור תבנית ולהריץ את העבודה מהתבנית.

אי אפשר למחוק משימות Dataflow, אבל אפשר לארכב משימות שהושלמו. כל המשימות שהושלמו, כולל משימות שנמצאות ברשימת המשימות בארכיון, נמחקות אחרי תקופת שמירה של 30 יום.

ביטול משימת Dataflow

כשמבטלים משימה, שירות Dataflow מפסיק את המשימה באופן מיידי.

הפעולות הבאות מתבצעות כשמבטלים עבודה:

  1. שירות Dataflow מפסיק את כל הטמעת הנתונים ועיבוד הנתונים.

  2. שירות Dataflow מתחיל לנקות את המשאבים של Google Cloud Platform שמצורפים לעבודה.

    המשאבים האלה יכולים לכלול כיבוי של מכונות וירטואליות של Compute Engine וסגירה של חיבורים פעילים למקורות או ליעדים של קלט/פלט.

מידע חשוב על ביטול משימה

  • ביטול של עבודה עוצר מיד את העיבוד של צינור עיבוד הנתונים.

  • יכול להיות שנתונים בתהליך יעברו איבוד כשמבטלים עבודה. נתונים בתהליך העברה הם נתונים שכבר נקראו אבל עדיין נמצאים בתהליך עיבוד בצינור הנתונים.

  • יכול להיות שעדיין תהיה לכם גישה לנתונים שנכתבו מהצינור למאגר פלט לפני שביטלתם את העבודה.

  • אם אובדן נתונים לא מטריד אתכם, ביטול העבודה יבטיח שמשאביGoogle Cloud שמשויכים לעבודה יושבתו בהקדם האפשרי.

ניקוז משימת Dataflow

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

הפעולות הבאות מתרחשות כשמרוקנים עבודה:

  1. העבודה מפסיקה להכניס נתונים חדשים ממקורות קלט זמן קצר אחרי קבלת בקשת הניקוז (בדרך כלל תוך כמה דקות).

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

  3. כשהעיבודים והפעולות של הכתיבה בהמתנה יסתיימו, שירות Dataflow ישבית את המשאבים שמשויכים לעבודה. Google Cloud

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

מידע חשוב על ניקוי של משימה

  • אין תמיכה בהפסקת עבודה של משימה בצינורות להרצת אצווה.

  • העלות של תחזוקת משאביGoogle Cloud שמשויכים לצנרת תמשיך לחול עד לסיום כל העיבוד והכתיבה.

  • אפשר לעדכן צינור שמתבצע בו ניקוי. אם הצינור נתקע, עדכון הצינור באמצעות קוד שמתקן את השגיאה שיוצרת את הבעיה מאפשר ניקוז מוצלח ללא אובדן נתונים.

  • אפשר לבטל עבודות שמתבצעות כרגע.

  • התהליך של ניקוי העבודה יכול להימשך זמן רב, למשל אם יש בצינור כמויות גדולות של נתונים שנשמרו במאגר.

  • אם צינור הסטרימינג כולל Splittable DoFn, צריך לקטום את התוצאה לפני שמפעילים את האפשרות drain. מידע נוסף על חיתוך של פונקציות DoFn שניתנות לפיצול זמין במאמרי העזרה של Apache Beam.

  • במקרים מסוימים, יכול להיות שעבודת Dataflow לא תוכל להשלים את פעולת הניקוז. אפשר לעיין ביומני העבודות כדי לזהות את שורש הבעיה ולנקוט את הפעולות המתאימות.

שמירת נתונים

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

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

משימות תקועות

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

טיימרים

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

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

ההשפעות של ניקוז משימה

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

המערכת לא ממתינה לסיום של חלונות מבוססי-זמן שעדיין פתוחים במהלך פעולת ניקוי.

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

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

הריקון יכול לגרום לחלונות מלאים באופן חלקי. במקרה כזה, אם תפעילו מחדש את צינור הנתונים שהתרוקן, יכול להיות שאותו חלון יופעל בפעם השנייה, מה שעלול לגרום לבעיות בנתונים. לדוגמה, בתרחיש הבא, יכול להיות שלקבצים יהיו שמות זהים, והנתונים יימחקו:

אם מרוקנים צינור עם חלונות של שעה בשעה 12:34, החלון של 12:00 עד 13:00 נסגר עם הנתונים שהופעלו רק ב-34 הדקות הראשונות של החלון. הצינור לא קורא נתונים חדשים אחרי השעה 12:34.

אם מפעילים מחדש את צינור הנתונים מיד לאחר מכן, חלון הזמן שבין 12:00 ל-13:00 מופעל שוב, עם הנתונים שנקראו רק בין 12:35 ל-13:00. המערכת לא שולחת כפילויות, אבל אם שם קובץ חוזר על עצמו, הנתונים נמחקים.

ב Google Cloud מסוף, אפשר לראות את פרטי השינויים של צינור הנתונים. בתרשים הבא מוצגים ההשפעות של פעולת ניקוי בתוך התהליך. הערה סימן המים מועבר לערך המקסימלי.

תצוגת שלבים של פעולת ניקוז.

איור 1. תצוגת שלבים של פעולת ניקוז.

ביטול בכוח של משימת Dataflow

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

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

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

  • שירות Dataflow מפסיק את כל הטמעת הנתונים ועיבוד הנתונים.

מידע חשוב על ביטול מאולץ של עבודות

  • ביטול מאולץ של משימה מפסיק מיד את העיבוד של צינור עיבוד הנתונים.

  • ביטול בכוח של משימה מיועד רק למשימות שנתקעו בתהליך הביטול הרגיל.

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

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

הפסקת משימת Dataflow

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

המסוף

  1. עוברים לדף משימות ב-Dataflow.

    מעבר לדף Jobs

  2. לוחצים על העבודה שרוצים להפסיק.

    כדי לעצור משימה, הסטטוס שלה צריך להיות running.

  3. בדף פרטי המשימה, לוחצים על הפסקה.

  4. מבצעים אחת מהפעולות הבאות:

    • לצינור עיבוד באצווה, לוחצים על ביטול או על ביטול בכוח.

    • בצינורות להזרמת נתונים, לוחצים על ביטול, ריקון או ביטול בכוח.

  5. כדי לאשר את הבחירה, לוחצים על Stop Job (הפסקת העבודה).

gcloud

כדי לרוקן או לבטל עבודת Dataflow, אפשר להשתמש בפקודה gcloud dataflow jobs ב-Cloud Shell או בטרמינל מקומי שמותקן בו ה-CLI של gcloud.

  1. מתחברים למעטפת.

  2. מציגים את רשימת מזהי המשימות של משימות Dataflow שפועלות כרגע, ורושמים את מזהה המשימה של המשימה שרוצים להפסיק:

    gcloud dataflow jobs list
    

    אם לא מגדירים את הדגל --region, מוצגות משימות Dataflow מכל האזורים הזמינים.

  3. מבצעים אחת מהפעולות הבאות:

    • כדי לסיים עבודת סטרימינג:

      gcloud dataflow jobs drain JOB_ID
      

      מחליפים את JOB_ID במזהה המשימה שהעתקתם קודם.

    • כדי לבטל עבודה של עיבוד נתונים באצווה או עבודה של סטרימינג:

      gcloud dataflow jobs cancel JOB_ID
      

      מחליפים את JOB_ID במזהה המשימה שהעתקתם קודם.

    • כדי לבטל בכוח משימת אצווה או משימת סטרימינג:

      gcloud dataflow jobs cancel JOB_ID --force
      

      מחליפים את JOB_ID במזהה המשימה שהעתקתם קודם.

API

כדי לבטל או לנקז עבודה באמצעות Dataflow API בארכיטקטורת REST, אפשר לבחור באפשרות projects.locations.jobs.update או באפשרות projects.jobs.update. בגוף הבקשה, מעבירים את מצב המשימה הנדרש בשדה requestedState של מופע המשימה של ה-API שנבחר.

חשוב: מומלץ להשתמש ב-projects.locations.jobs.update, כי projects.jobs.update מאפשר רק לעדכן את הסטטוס של משימות שפועלות ב-us-central1.

  • כדי לבטל את העבודה, מגדירים את מצב העבודה ל-JOB_STATE_CANCELLED.

  • כדי לסיים את העבודה, מגדירים את מצב העבודה ל-JOB_STATE_DRAINED.

  • כדי לבטל את העבודה בכוח, מגדירים את מצב העבודה ל-JOB_STATE_CANCELLED עם התווית "force_cancel_job": "true". גוף הבקשה הוא:

    {
      "requestedState": "JOB_STATE_CANCELLED",
      "labels": {
        "force_cancel_job": "true"
      }
    }
    

זיהוי השלמה של משימה ב-Dataflow

כדי לזהות מתי ביטול העבודה או הניקוי שלה הסתיימו, אפשר להשתמש באחת מהשיטות הבאות:

  • להשתמש בשירות לניהול תהליכי עבודה כמו Cloud Composer כדי לעקוב אחרי משימת Dataflow.
  • מריצים את צינור הנתונים באופן סינכרוני כדי שהמשימות ייחסמו עד לסיום צינור הנתונים. מידע נוסף מופיע במאמר שליטה במצבי הפעלה בקטע בנושא הגדרת אפשרויות של צינורות.
  • משתמשים בכלי שורת הפקודה ב-Google Cloud CLI כדי לבדוק את סטטוס העבודה. כדי לקבל רשימה של כל משימות Dataflow בפרויקט, מריצים את הפקודה הבאה במעטפת או בטרמינל:

    gcloud dataflow jobs list
    

    בפלט מוצגים מזהה המשימה, השם, הסטטוס (STATE) ומידע נוסף על כל משימה. מידע נוסף מופיע במאמר שימוש ב-Google Cloud CLI כדי להציג רשימה של משימות.

ארכיון של משימות שהושלמו ב-Dataflow

כשמעבירים משימת Dataflow לארכיון, היא מוסרת מרשימת המשימות בדף Jobs ב-Dataflow במסוף. המשרה מועברת לרשימת משרות בארכיון. אפשר להעביר לארכיון רק משימות שהושלמו, כולל משימות במצבים הבאים:

  • JOB_STATE_CANCELLED
  • JOB_STATE_DRAINED
  • JOB_STATE_DONE
  • JOB_STATE_FAILED
  • JOB_STATE_UPDATED

מידע נוסף על אימות המצבים האלה זמין במאמר זיהוי השלמה של משימת Dataflow.

למידע על פתרון בעיות כשמעבירים משרות לארכיון, אפשר לעיין במאמר פתרון בעיות שקשורות להעברת משרות לארכיון בקטע 'פתרון בעיות שקשורות ל-Dataflow'.

כל המשרות שהועברו לארכיון נמחקות אחרי תקופת שמירה של 30 יום.

העברת משרה לארכיון

כדי להסיר משימת Dataflow שהושלמה מרשימת המשימות הראשית בדף Jobs, פועלים לפי השלבים הבאים.

המסוף

  1. נכנסים לדף Jobs של Dataflow במסוף Google Cloud .

    מעבר לדף Jobs

    מוצגת רשימה של משימות Dataflow עם הסטטוס שלהן.

  2. בוחרים משרה.

  3. בדף Job Details (פרטי המשימה), לוחצים על Archive (העברה לארכיון). אם העבודה לא הסתיימה, האפשרות העברה לארכיון לא זמינה.

REST

כדי להעביר משרה לארכיון באמצעות ה-API, משתמשים ב-method‏ projects.locations.jobs.update.

בבקשה הזו צריך לציין אובייקט JobMetadata מעודכן. באובייקט JobMetadata.userDisplayProperties, משתמשים בצמד מפתח/ערך "archived":"true".

בנוסף לאובייקט JobMetadata המעודכן, בקשת ה-API צריכה לכלול גם את פרמטר השאילתה updateMask בכתובת ה-URL של הבקשה:

https://dataflow.googleapis.com/v1b3/[...]/jobs/JOB_ID/?updateMask=job_metadata.user_display_properties.archived

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • PROJECT_ID: מזהה הפרויקט
  • REGION: אזור Dataflow
  • JOB_ID: המזהה של משימת Dataflow

ה-method של ה-HTTP וכתובת ה-URL:

PUT https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/REGION/jobs/JOB_ID/?updateMask=job_metadata.user_display_properties.archived

גוף בקשת JSON:

{
  "job_metadata": {
    "userDisplayProperties": {
      "archived": "true"
    }
  }
}

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

curl

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

curl -X PUT \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/REGION/jobs/JOB_ID/?updateMask=job_metadata.user_display_properties.archived"

PowerShell

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method PUT `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/REGION/jobs/JOB_ID/?updateMask=job_metadata.user_display_properties.archived" | Select-Object -Expand Content

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "id": "JOB_ID",
  "projectId": "PROJECT_ID",
  "currentState": "JOB_STATE_DONE",
  "currentStateTime": "2025-05-20T20:54:41.651442Z",
  "createTime": "2025-05-20T20:51:06.031248Z",
  "jobMetadata": {
    "userDisplayProperties": {
      "archived": "true"
    }
  },
  "startTime": "2025-05-20T20:51:06.031248Z"
}

gcloud

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

לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:

  • JOB_ID: המזהה של משימת Dataflow שרוצים להעביר לארכיון.
  • REGION: אופציונלי. האזור של Dataflow שבו מתבצעת העבודה.

מריצים את הפקודה הבאה:

‫Linux,‏ macOS או Cloud Shell

gcloud dataflow jobs archive JOB_ID --region=REGION_ID

‏Windows (PowerShell)

gcloud dataflow jobs archive JOB_ID --region=REGION_ID

Windows‏ (cmd.exe)

gcloud dataflow jobs archive JOB_ID --region=REGION_ID

אמורים לקבל תגובה שדומה לזו:

Archived job [JOB_ID].
createTime: '2025-06-29T11:00:02.432552Z'
currentState: JOB_STATE_DONE
currentStateTime: '2025-06-29T11:04:25.125921Z'
id: JOB_ID
jobMetadata:
userDisplayProperties:
    archived: 'true'
projectId: PROJECT_ID
startTime: '2025-06-29T11:00:02.432552Z'

הצגה ושחזור של משימות שהועברו לארכיון

כדי להציג משרות שהועברו לארכיון או לשחזר משרות שהועברו לארכיון לרשימת המשרות הראשית בדף Jobs (משרות) ב-Dataflow, פועלים לפי השלבים הבאים.

המסוף

  1. נכנסים לדף Jobs של Dataflow במסוף Google Cloud .

    מעבר לדף Jobs

  2. לוחצים על המתג בארכיון. תוצג רשימה של משימות Dataflow שהועברו לארכיון.

  3. בוחרים משרה.

  4. כדי לשחזר את המשימה לרשימת המשימות הראשית בדף Jobs (משימות) ב-Dataflow, לוחצים על Restore (שחזור) בדף Job Details (פרטי המשימה).

REST

כדי לשחזר משימה שהועברה לארכיון באמצעות ה-API, משתמשים ב-method‏ projects.locations.jobs.update.

בבקשה הזו צריך לציין אובייקט JobMetadata מעודכן. באובייקט JobMetadata.userDisplayProperties, משתמשים בצמד מפתח/ערך "archived":"false".

בנוסף לאובייקט JobMetadata המעודכן, בקשת ה-API צריכה לכלול גם את פרמטר השאילתה updateMask בכתובת ה-URL של הבקשה:

https://dataflow.googleapis.com/v1b3/[...]/jobs/JOB_ID/?updateMask=job_metadata.user_display_properties.archived

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • PROJECT_ID: מזהה הפרויקט
  • REGION: אזור Dataflow
  • JOB_ID: המזהה של משימת Dataflow

ה-method של ה-HTTP וכתובת ה-URL:

PUT https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/REGION/jobs/JOB_ID/?updateMask=job_metadata.user_display_properties.archived

גוף בקשת JSON:

{
  "job_metadata": {
    "userDisplayProperties": {
      "archived": "false"
    }
  }
}

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

curl

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

curl -X PUT \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/REGION/jobs/JOB_ID/?updateMask=job_metadata.user_display_properties.archived"

PowerShell

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method PUT `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/REGION/jobs/JOB_ID/?updateMask=job_metadata.user_display_properties.archived" | Select-Object -Expand Content

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "id": "JOB_ID",
  "projectId": "PROJECT_ID",
  "currentState": "JOB_STATE_DONE",
  "currentStateTime": "2025-05-20T20:54:41.651442Z",
  "createTime": "2025-05-20T20:51:06.031248Z",
  "jobMetadata": {
    "userDisplayProperties": {
      "archived": "false"
    }
  },
  "startTime": "2025-05-20T20:51:06.031248Z"
}

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