תבנית להמרת פורמט קובץ (Avro, ‏ Parquet, ‏ CSV)

תבנית הצינור File Format Conversion (המרת פורמט קובץ) היא צינור אצווה שממיר קבצים שמאוחסנים ב-Cloud Storage מפורמט נתמך אחד לפורמט נתמך אחר.

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

  • CSV to Avro
  • ‫CSV ל-Parquet
  • Avro to Parquet
  • ‫Parquet ל-Avro

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

  • הקטגוריה של Cloud Storage שרוצים לייצא אליה תוכן צריכה להתקיים לפני שמריצים את צינור הנתונים.

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

פרמטר תיאור
inputFileFormat פורמט קובץ הקלט. הערך חייב להיות אחד מהערכים הבאים: [csv, avro, parquet].
outputFileFormat פורמט קובץ הפלט. הערך חייב להיות אחד מהערכים הבאים: [avro, parquet].
inputFileSpec תבנית הנתיב של Cloud Storage לקובצי קלט. לדוגמה, gs://bucket-name/path/*.csv
outputBucket תיקיית Cloud Storage שבה ייכתבו קובצי הפלט. הנתיב הזה חייב להסתיים בלוכסן. לדוגמה, gs://bucket-name/output/
schema הנתיב ב-Cloud Storage לקובץ סכימת Avro. לדוגמה, gs://bucket-name/schema/my-schema.avsc
containsHeaders (אופציונלי) קובצי ה-CSV של הקלט מכילים רשומת כותרת (true/false). ערך ברירת המחדל הוא false. נדרש רק כשקוראים קובצי CSV.
csvFormat (אופציונלי) מפרט פורמט ה-CSV שבו יש להשתמש לניתוח רשומות. ערך ברירת המחדל הוא Default. פרטים נוספים זמינים במאמר בנושא פורמט CSV של Apache Commons.
delimiter (אופציונלי) התו שמפריד בין השדות בקובצי ה-CSV של הקלט.
outputFilePrefix (אופציונלי) הקידומת של קובץ הפלט. ערך ברירת המחדל הוא output.
numShards (אופציונלי) מספר הרסיסים של קובץ הפלט.

הרצת התבנית

המסוף

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

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

  5. בתפריט הנפתח תבנית של העברת נתונים, בוחרים בתבנית המרת פורמטים של קבצים.
  6. בשדות הפרמטרים שמופיעים, מזינים את ערכי הפרמטרים.
  7. לוחצים על הפעלת העבודה.

gcloud

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

gcloud dataflow flex-template run JOB_NAME \
    --project=PROJECT_ID \
    --region=REGION_NAME \
    --template-file-gcs-location=gs://dataflow-templates-REGION_NAME/VERSION/flex/ \
    --parameters \
inputFileFormat=INPUT_FORMAT,\
outputFileFormat=OUTPUT_FORMAT,\
inputFileSpec=INPUT_FILES,\
schema=SCHEMA,\
outputBucket=OUTPUT_FOLDER

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

  • PROJECT_ID: מזהה הפרויקט שבו רוצים להריץ את משימת Dataflow Google Cloud
  • 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/
  • INPUT_FORMAT: פורמט הקובץ של קובץ הקלט. הערך חייב להיות אחד מהערכים הבאים: [csv, avro, parquet]
  • OUTPUT_FORMAT: פורמט הקובץ של קובצי הפלט. הערך חייב להיות אחד מהערכים הבאים: [avro, parquet]
  • INPUT_FILES: דפוס הנתיב של קובצי הקלט
  • OUTPUT_FOLDER: תיקיית Cloud Storage לקובצי פלט
  • SCHEMA: הנתיב לקובץ סכימת Avro

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": {
          "inputFileFormat": "INPUT_FORMAT",
          "outputFileFormat": "OUTPUT_FORMAT",
          "inputFileSpec": "INPUT_FILES",
          "schema": "SCHEMA",
          "outputBucket": "OUTPUT_FOLDER"
      },
      "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/",
   }
}

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

  • 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/
  • INPUT_FORMAT: פורמט הקובץ של קובץ הקלט. הערך חייב להיות אחד מהערכים הבאים: [csv, avro, parquet]
  • OUTPUT_FORMAT: פורמט הקובץ של קובצי הפלט. הערך חייב להיות אחד מהערכים הבאים: [avro, parquet]
  • INPUT_FILES: דפוס הנתיב של קובצי הקלט
  • OUTPUT_FOLDER: תיקיית Cloud Storage לקובצי פלט
  • SCHEMA: הנתיב לקובץ סכימת Avro

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