צינור הנתונים של קובצי CSV מ-Cloud Storage ל-BigQuery הוא צינור נתונים באצוות שמאפשר לקרוא נתונים מקובצי CSV שמאוחסנים ב-Cloud Storage ולצרף את התוצאה לטבלה ב-BigQuery.
קובצי ה-CSV יכולים להיות לא דחוסים או דחוסים בפורמטים שמפורטים בדף של Enum SDK Compression.
הדרישות לגבי צינורות עיבוד נתונים
כדי להשתמש בתבנית הזו, אתם צריכים לוודא שצינור הנתונים שלכם עומד בדרישות הבאות.
קובץ JSON של סכימת BigQuery
יוצרים קובץ JSON שמתאר את הסכימה של BigQuery.
מוודאים שלסכימה יש מערך JSON ברמה העליונה בשם BigQuery Schema, ושהתוכן שלו תואם לתבנית {"name": "COLUMN_NAME", "type": "DATA_TYPE"}.
תבנית האצווה של קובצי CSV מ-Cloud Storage ל-BigQuery לא תומכת בייבוא נתונים לשדות STRUCT (Record) בטבלת היעד ב-BigQuery.
קובץ ה-JSON הבא מתאר סכימה לדוגמה של BigQuery:
{ "BigQuery Schema": [ { "name": "location", "type": "STRING" }, { "name": "name", "type": "STRING" }, { "name": "age", "type": "STRING" }, { "name": "color", "type": "STRING" }, { "name": "coffee", "type": "STRING" } ] }
סכמת טבלת השגיאות
הטבלה ב-BigQuery שבה מאוחסנות הרשומות שנדחו מקובצי ה-CSV צריכה להתאים לסכימת הטבלה שמוגדרת כאן.
{ "BigQuery Schema": [ { "name": "RawContent", "type": "STRING" }, { "name": "ErrorMsg", "type": "STRING" } ] }
פרמטרים של תבניות
פרמטרים נדרשים
- inputFilePattern: הנתיב ב-Cloud Storage לקובץ ה-CSV שמכיל את הטקסט לעיבוד. לדוגמה,
gs://your-bucket/path/*.csv. - schemaJSONPath: הנתיב ב-Cloud Storage לקובץ ה-JSON שמגדיר את סכימת BigQuery.
- outputTable: השם של הטבלה ב-BigQuery שבה מאוחסנים הנתונים המעובדים. אם משתמשים מחדש בטבלה קיימת ב-BigQuery, הנתונים מתווספים לטבלת היעד.
- bigQueryLoadingTemporaryDirectory: ספריית הזמנית לשימוש במהלך תהליך הטעינה של BigQuery. לדוגמה,
gs://your-bucket/your-files/temp_dir. - badRecordsOutputTable: השם של הטבלה ב-BigQuery שבה יישמרו הנתונים שנדחו במהלך העיבוד של קובצי ה-CSV. אם משתמשים מחדש בטבלה קיימת ב-BigQuery, הנתונים מתווספים לטבלת היעד. הסכימה של הטבלה הזו צריכה להיות זהה לסכימה של טבלת השגיאות (https://cloud.google.com/dataflow/docs/guides/templates/provided/cloud-storage-csv-to-bigquery#GcsCSVToBigQueryBadRecordsSchema).
- delimiter: התו שמפריד בין העמודות בקובץ ה-CSV. לדוגמה,
,. - csvFormat: פורמט ה-CSV בהתאם לפורמט Apache Commons CSV. ברירת המחדל:
Default.
פרמטרים אופציונליים
- containsHeaders: מציין אם קובץ ה-CSV כולל כותרות. ברירת המחדל:
false. - csvFileEncoding: פורמט קידוד התווים של קובץ ה-CSV. הערכים המותרים הם
US-ASCII,ISO-8859-1,UTF-8ו-UTF-16. ברירת המחדל היא UTF-8.
הרצת התבנית
המסוף
- עוברים לדף Create job from template (יצירת משימה מתבנית) ב-Dataflow. כניסה לדף Create job from template
- בשדה שם המשימה, מזינים שם ייחודי למשימה.
- אופציונלי: בשדה Regional endpoint (נקודת קצה אזורית), בוחרים ערך מהתפריט הנפתח. אזור ברירת המחדל הוא
us-central1.רשימת האזורים שבהם אפשר להריץ משימת Dataflow מופיעה במאמר בנושא מיקומי Dataflow.
- בתפריט הנפתח Dataflow template (תבנית Dataflow), בוחרים בתבנית CSV files on Cloud Storage to BigQuery (Batch) (קובצי CSV ב-Cloud Storage ל-BigQuery) (באצווה).
- בשדות הפרמטרים שמופיעים, מזינים את ערכי הפרמטרים.
- לוחצים על הפעלת העבודה.
gcloud
במעטפת או בטרמינל, מריצים את התבנית:
gcloud dataflow jobs run JOB_NAME \ --gcs-location gs://dataflow-templates-REGION_NAME/VERSION/ \ --region REGION_NAME \ --parameters \ inputFilePattern=PATH_TO_CSV_DATA,\ schemaJSONPath=PATH_TO_BIGQUERY_SCHEMA_JSON,\ outputTable=BIGQUERY_DESTINATION_TABLE,\ badRecordsOutputTable=BIGQUERY_BAD_RECORDS_TABLE,\ csvFormat=CSV_FORMAT,\ delimiter=DELIMITER,\ bigQueryLoadingTemporaryDirectory=PATH_TO_TEMP_DIR_ON_GCS,\ containsHeaders=CONTAINS_HEADERS,\ csvFileEncoding=CSV_FILE_ENCODING
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט שבו רוצים להריץ את משימת Dataflow Google Cloud -
JOB_NAME: שם ייחודי של המשימה לפי בחירתכם -
VERSION: הגרסה של התבנית שבה רוצים להשתמשאפשר להשתמש בערכים הבאים:
-
latestכדי להשתמש בגרסה העדכנית של התבנית, שזמינה בתיקיית האב ללא תאריך בדלי – gs://dataflow-templates-REGION_NAME/latest/ - שם הגרסה, כמו
2023-09-12-00_RC00, כדי להשתמש בגרסה ספציפית של התבנית, שאפשר למצוא אותה בתיקיית האב המתאימה עם התאריך בדלי – gs://dataflow-templates-REGION_NAME/
-
-
REGION_NAME: האזור שבו רוצים לפרוס את עבודת Dataflow, לדוגמה:us-central1 -
PATH_TO_CSV_DATA: הנתיב ב-Cloud Storage לקובצי ה-CSV -
PATH_TO_BIGQUERY_SCHEMA_JSON: הנתיב ב-Cloud Storage אל קובץ ה-JSON שמכיל את הגדרת הסכימה -
BIGQUERY_DESTINATION_TABLE: השם של טבלת היעד ב-BigQuery -
BIGQUERY_BAD_RECORDS_TABLE: השם של טבלת הרשומות הפגומות ב-BigQuery -
PATH_TO_TEMP_DIR_ON_GCS: הנתיב ב-Cloud Storage לספריית הזמנית -
DELIMITER: תו מפריד בקובץ CSV -
CSV_FORMAT: מפרט פורמט CSV לניתוח רשומות -
CONTAINS_HEADERS: האם קובצי ה-CSV מכילים כותרות -
CSV_FILE_ENCODING: קידוד בקובצי ה-CSV
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/ { "jobName": "JOB_NAME", "parameters": { "inputFilePattern":"PATH_TO_CSV_DATA", "schemaJSONPath": "PATH_TO_BIGQUERY_SCHEMA_JSON", "outputTable":"BIGQUERY_DESTINATION_TABLE", "badRecordsOutputTable":"BIGQUERY_BAD_RECORDS_TABLE", "csvFormat":"CSV_FORMAT", "delimiter":"DELIMITER", "bigQueryLoadingTemporaryDirectory": "PATH_TO_TEMP_DIR_ON_GCS", "containsHeaders": "CONTAINS_HEADERS", "csvFileEncoding": "CSV_FILE_ENCODING" }, "environment": { "zone": "us-central1-f" } }
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט שבו רוצים להריץ את משימת Dataflow Google Cloud -
JOB_NAME: שם ייחודי של המשימה לפי בחירתכם -
VERSION: הגרסה של התבנית שבה רוצים להשתמשאפשר להשתמש בערכים הבאים:
-
latestכדי להשתמש בגרסה העדכנית של התבנית, שזמינה בתיקיית האב ללא תאריך בדלי – gs://dataflow-templates-REGION_NAME/latest/ - שם הגרסה, כמו
2023-09-12-00_RC00, כדי להשתמש בגרסה ספציפית של התבנית, שאפשר למצוא אותה בתיקיית האב המתאימה עם התאריך בדלי – gs://dataflow-templates-REGION_NAME/
-
-
LOCATION: האזור שבו רוצים לפרוס את עבודת Dataflow, לדוגמה:us-central1 -
PATH_TO_CSV_DATA: הנתיב ב-Cloud Storage לקובצי ה-CSV -
PATH_TO_BIGQUERY_SCHEMA_JSON: הנתיב ב-Cloud Storage אל קובץ ה-JSON שמכיל את הגדרת הסכימה -
BIGQUERY_DESTINATION_TABLE: השם של טבלת היעד ב-BigQuery -
BIGQUERY_BAD_RECORDS_TABLE: השם של טבלת הרשומות הפגומות ב-BigQuery -
PATH_TO_TEMP_DIR_ON_GCS: הנתיב ב-Cloud Storage לספריית הזמנית -
DELIMITER: תו מפריד בקובץ CSV -
CSV_FORMAT: מפרט פורמט CSV לניתוח רשומות -
CONTAINS_HEADERS: האם קובצי ה-CSV מכילים כותרות -
CSV_FILE_ENCODING: קידוד בקובצי ה-CSV
המאמרים הבאים
- מידע נוסף על תבניות Dataflow
- כאן אפשר לעיין ברשימת התבניות ש-Google סיפקה.