File Format Conversion(Avro、Parquet、CSV)テンプレート

File Format Conversion テンプレートは、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 の [テンプレートからジョブを作成] ページに移動します。
  2. [テンプレートからジョブを作成] に移動
  3. [ジョブ名] フィールドに、固有のジョブ名を入力します。
  4. (省略可)[リージョン エンドポイント] で、プルダウン メニューから値を選択します。デフォルトのリージョンは us-central1 です。

    Dataflow ジョブを実行できるリージョンのリストについては、Dataflow のロケーションをご覧ください。

  5. [Dataflow テンプレート] プルダウン メニューから、[ the Convert file formats template] を選択します。
  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/File_Format_Conversion \
    --parameters \
inputFileFormat=INPUT_FORMAT,\
outputFileFormat=OUTPUT_FORMAT,\
inputFileSpec=INPUT_FILES,\
schema=SCHEMA,\
outputBucket=OUTPUT_FOLDER

次のように置き換えます。

  • PROJECT_ID: Dataflow ジョブを実行する Google Cloud プロジェクトの ID
  • 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

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 ジョブを実行する Google Cloud プロジェクトの ID
  • 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 スキーマ ファイルのパス

次のステップ