תבנית של נושא או מינוי Pub/Sub לקובצי טקסט ב-Cloud Storage

תבנית הטקסט של נושא או מינוי ב-Pub/Sub ל-Cloud Storage היא צינור סטרימינג שקורא רשומות מ-Pub/Sub ושומר אותן כסדרה של קבצים ב-Cloud Storage בפורמט טקסט. אפשר להשתמש בתבנית כדי לשמור נתונים ב-Pub/Sub לשימוש עתידי. כברירת מחדל, התבנית יוצרת קובץ חדש כל 5 דקות.

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

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

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

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

  • ‫outputDirectory: הנתיב והקידומת של שם הקובץ שאליו ייכתבו קובצי הפלט. הערך הזה חייב להסתיים בלוכסן. לדוגמה, gs://your-bucket/your-path/.

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

  • ‫inputTopic: נושא Pub/Sub שממנו יתבצע קריאת הקלט. אם הפרמטר הזה מסופק, אל תשתמשו ב-inputSubscription. לדוגמה, projects/<PROJECT_ID>/topics/<TOPIC_NAME>.
  • ‫inputSubscription: המינוי ל-Pub/Sub שממנו ייקרא הקלט. אם הפרמטר הזה מסופק, אל תשתמשו ב-inputTopic. לדוגמה, projects/<PROJECT_ID>/subscription/<SUBSCRIPTION_NAME>.
  • ‫userTempLocation: הספרייה שהמשתמש סיפק כדי להוציא אליה קבצים זמניים. חייב להסתיים בלוכסן.
  • ‫outputFilenamePrefix: הקידומת שתוצב בכל קובץ של חלון. לדוגמה, output-. ברירת המחדל היא: output.
  • ‫outputFilenameSuffix: הסיומת שתוצב בכל קובץ עם חלון, בדרך כלל סיומת קובץ כמו .txt או .csv. לדוגמה, .txt. ברירת המחדל היא ריקה.
  • ‫outputShardTemplate: תבנית השארד מגדירה את החלק הדינמי של כל קובץ עם חלון זמן. כברירת מחדל, צינור הנתונים משתמש בשבר אחד לפלט למערכת הקבצים בכל חלון. כלומר, כל פלט הנתונים נשמר בקובץ יחיד לכל חלון. ערך ברירת המחדל של outputShardTemplate הוא W-P-SS-of-NN, כאשר W הוא טווח התאריכים של החלון, P הוא פרטי החלונית, S הוא מספר הרסיס ו-N הוא מספר הרסיסים. במקרה של קובץ יחיד, החלק SS-of-NN של outputShardTemplate הוא 00-of-01.
  • ‫numShards: המספר המקסימלי של רסיסי פלט שנוצרים בזמן כתיבה. מספר גבוה יותר של רסיסים פירושו תפוקה גבוהה יותר לכתיבה ב-Cloud Storage, אבל עלולות להיות עלויות גבוהות יותר של צבירת נתונים ברסיסים כשמעבדים קבצים של פלט Cloud Storage. ברירת המחדל היא 0.
  • ‫windowDuration: משך החלון הוא המרווח שבו הנתונים נכתבים לספריית הפלט. הגדרת משך הזמן על סמך קצב העברת הנתונים של צינור עיבוד הנתונים. לדוגמה, כדי להשיג תפוקה גבוהה יותר, יכול להיות שיהיה צורך להקטין את גודל החלון כדי שהנתונים יתאימו לזיכרון. ברירת המחדל היא 5m (5 דקות), והמינימום הוא 1s (שנייה אחת). הפורמטים המותרים הם: [int]s (לשניות, לדוגמה: 5s), [int]m (לדקות, לדוגמה: 12m), [int]h (לשעות, לדוגמה: 2h). לדוגמה: 5m.
  • ‫yearPattern: תבנית לעיצוב השנה. הערך חייב להיות אחד או יותר מהערכים הבאים: y או Y. הרישיות לא משנה את השנה. אפשר להוסיף לתבנית תווים שלא אלפאנומריים או את התו של הספרייה (/). ברירת המחדל היא YYYY.
  • ‫monthPattern: תבנית לעיצוב החודש. חייב להכיל תו אחד או יותר מתוך M. אפשר להוסיף לתבנית תווים שהם לא אלפאנומריים או את התו של הספרייה (/). ברירת המחדל היא MM.
  • ‫dayPattern: תבנית לעיצוב היום. הערך חייב להיות d (יום בחודש) או D (יום בשנה). הרישיות לא משנה את השנה. אפשר להוסיף לתבנית תווים שלא אלפאנומריים או את התו של הספרייה (/). ברירת המחדל היא dd.
  • ‫hourPattern: תבנית לפורמט של השעה. חייב להכיל תו אחד או יותר מתוך התווים H. אפשר להוסיף לתבנית תווים שהם לא אלפאנומריים או את התו של הספרייה (/). ברירת המחדל היא HH.
  • ‫minutePattern: תבנית לעיצוב הדקה. חייב להכיל תו אחד או יותר מתוך m. אפשר להוסיף לתבנית תווים שהם לא אלפאנומריים או את התו של הספרייה (/). ברירת המחדל היא mm.

הרצת התבנית

המסוף

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

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

  5. בתפריט הנפתח Dataflow template (תבנית Dataflow), בוחרים בתבנית Pub/Sub Topic or Subscription to Text Files on Cloud Storage (נושא או מינוי Pub/Sub לקובצי טקסט ב-Cloud Storage).
  6. בשדות הפרמטרים שמופיעים, מזינים את ערכי הפרמטרים.
  7. לוחצים על הפעלת העבודה.

gcloud

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

gcloud dataflow flex-template run JOB_NAME \
    --project=YOUR_PROJECT_ID \
    --region REGION_NAME \
    --template-file-gcs-location gs://dataflow-templates/VERSION/flex/Cloud_PubSub_to_GCS_Text_Flex \
    --parameters \
inputSubscription=projects/PROJECT_ID/subscriptions/SUBSCRIPTION_NAME,\
outputDirectory=gs://BUCKET_NAME/output/,\
outputFilenamePrefix=output-,\
outputFilenameSuffix=.txt

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

  • ‫JOB_NAME: שם ייחודי של המשימה לפי בחירתכם
  • ‫REGION_NAME: האזור שבו רוצים לפרוס את עבודת Dataflow, לדוגמה: us-central1
  • ‫VERSION: הגרסה של התבנית שרוצים להשתמש בה

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

    • latest כדי להשתמש בגרסה העדכנית של התבנית, שזמינה בתיקיית ההורה ללא תאריך בדלי – gs://dataflow-templates/latest/
    • שם הגרסה, כמו 2023-09-12-00_RC00, כדי להשתמש בגרסה ספציפית של התבנית. אפשר למצוא את הגרסה הזו בתיקיית ההורה המתאימה עם התאריך בדלי – gs://dataflow-templates/
  • ‫SUBSCRIPTION_NAME: השם של המינוי שלכם ל-Pub/Sub
  • ‫BUCKET_NAME: שם הקטגוריה של Cloud Storage

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": {
       "inputSubscription": "projects/PROJECT_ID/subscriptions/SUBSCRIPTION_NAME"
       "outputDirectory": "gs://BUCKET_NAME/output/",
       "outputFilenamePrefix": "output-",
       "outputFilenameSuffix": ".txt",
    },
    "containerSpecGcsPath": "gs://dataflow-templates/VERSION/flex/Cloud_PubSub_to_GCS_Text_Flex",
  }
}

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

  • ‫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/
  • ‫SUBSCRIPTION_NAME: השם של המינוי שלכם ל-Pub/Sub
  • ‫BUCKET_NAME: שם הקטגוריה של Cloud Storage

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