檔案格式轉換 (Avro、Parquet、CSV) 範本

「檔案格式轉換」範本是一種批次管道,可將儲存在 Cloud Storage 的檔案從一種支援格式轉換為另一種格式。

支援的格式轉換如下:

  • CSV 轉換為 Avro
  • CSV 轉換為 Parquet
  • Avro 轉換為 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 Avro 結構定義檔案的 Cloud Storage 路徑。例如 gs://bucket-name/schema/my-schema.avsc
containsHeaders (選用) 輸入的 CSV 檔案是否包含標頭記錄 (true/false)。預設值為 false。讀取 CSV 檔案時才需要。
csvFormat (選用) 用於剖析記錄的 CSV 格式規格。預設值為 Default。 詳情請參閱 Apache Commons CSV 格式
delimiter (選用) 輸入 CSV 檔案使用的欄位分隔符號。
outputFilePrefix (選用) 輸出檔案前置字串。預設值為 output
numShards (選用) 輸出檔案資料分割數。

執行範本

控制台

  1. 前往 Dataflow 的「Create job from template」(透過範本建立工作) 頁面。
  2. 前往「依據範本建立工作」
  3. 在「工作名稱」欄位中,輸入專屬工作名稱。
  4. 選用:如要使用區域端點,請從下拉式選單中選取值。預設區域為 us-central1

    如需可執行 Dataflow 工作的地區清單,請參閱「Dataflow 位置」。

  5. 從「Dataflow template」(Dataflow 範本) 下拉式選單中選取 the Convert file formats template。
  6. 在提供的參數欄位中輸入參數值。
  7. 按一下「Run Job」(執行工作)

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/File_Format_Conversion \
    --parameters \
inputFileFormat=INPUT_FORMAT,\
outputFileFormat=OUTPUT_FORMAT,\
inputFileSpec=INPUT_FILES,\
schema=SCHEMA,\
outputBucket=OUTPUT_FOLDER

更改下列內容:

  • PROJECT_ID: 您要執行 Dataflow 工作的專案 ID Google Cloud
  • JOB_NAME: 您選擇的不重複工作名稱
  • REGION_NAME: 您要部署 Dataflow 工作的地區,例如 us-central1
  • VERSION: 您要使用的範本版本

    您可以使用下列值:

  • INPUT_FORMAT:輸入檔案的檔案格式,必須是 [csv, avro, parquet] 的其中一種格式
  • OUTPUT_FORMAT:輸出檔案的檔案格式,必須是 [avro, parquet] 之一
  • INPUT_FILES:輸入檔案的路徑模式
  • OUTPUT_FOLDER:輸出檔案的 Cloud Storage 資料夾
  • SCHEMA:Avro 結構定義檔案的路徑

API

如要使用 REST API 執行範本,請傳送 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/File_Format_Conversion",
   }
}

更改下列內容:

  • PROJECT_ID: 您要執行 Dataflow 工作的專案 ID Google Cloud
  • JOB_NAME: 您選擇的不重複工作名稱
  • LOCATION: 您要部署 Dataflow 工作的地區,例如 us-central1
  • VERSION: 您要使用的範本版本

    您可以使用下列值:

  • INPUT_FORMAT:輸入檔案的檔案格式,必須是 [csv, avro, parquet] 的其中一種格式
  • OUTPUT_FORMAT:輸出檔案的檔案格式,必須是 [avro, parquet] 之一
  • INPUT_FILES:輸入檔案的路徑模式
  • OUTPUT_FOLDER:輸出檔案的 Cloud Storage 資料夾
  • SCHEMA:Avro 結構定義檔案的路徑

後續步驟