変換のパッケージ化とインポート

Apache Beam YAML を使用すると、Beam YAML プロバイダで変換をパッケージ化して再利用できます。プロバイダを使用すると、変換を再利用可能なユニットにカプセル化し、Beam YAML パイプラインにインポートできます。YAML、Python、Java の Apache Beam 変換はすべて、この方法でパッケージ化できます。

ジョブビルダーを使用すると、Cloud Storage からプロバイダを読み込み、ジョブで使用できます。

プロバイダの作成

Beam YAML プロバイダは YAML ファイルで定義します。これらのファイルには、提供された変換の実装と構成を指定します。個々のプロバイダのリストは、type キーと config キーを含む YAML リスト項目として表します。Java プロバイダと Python プロバイダには、変換の実装を指定する config キーもあります。YAML で定義したプロバイダの実装は、インラインで記述されます。

YAML プロバイダ

YAML プロバイダは、変換定義の名前のマップとして新しい YAML 変換を定義します。たとえば、このプロバイダでは、入力からフィールドを乗算する変換を定義しています。

- type: yaml
  transforms:
    SquareElement:
      body:
        type: chain
        transforms:
          - type: MapToFields
            config:
              language: python
              append: true
              fields:
                power: "element ** 2"

YAML プロバイダは、変換定義で config_schema キーを使用して変換パラメータを指定し、Jinja2 テンプレート化でこれらのパラメータを使用することもできます。

- type: yaml
  transforms:
    RaiseElementToPower:
      config_schema:
        properties:
          n: {type: integer}
      body:
        type: chain
        transforms:
          - type: MapToFields
            config:
              language: python
              append: true
              fields:
                power: "element ** {{n}}"

指定された変換がソースとして機能する場合は、requires_inputs: false を設定する必要があります。

- type: yaml
  transforms:
    CreateTestElements:
      requires_inputs: false
      body: |
        type: Create
        config:
          elements: [1,2,3,4]

複合変換も定義できます。

- type: yaml
  transforms:
    ConsecutivePowers:
      config_schema:
        properties:
          end: {type: integer}
          n: {type: integer}
      requires_inputs: false
      body: |
        type: chain
        transforms:
          - type: Range
            config:
              end: {{end}}
          - type: RaiseElementToPower
            config:
              n: {{n}}

Python プロバイダ

Python 変換は、次の構文を使用して指定できます。

- type: pythonPackage
  config:
    packages:
      - pypi_package>=version
  transforms:
    MyCustomTransform: "pkg.module.PTransformClassOrCallable"

詳細な例については、GitHub の Python プロバイダのスターター プロジェクトをご覧ください。

Java プロバイダ

Java 変換は、次の構文を使用して指定できます。

- type: javaJar
  config:
    jar: gs://your-bucket/your-java-transform.jar
  transforms:
    MyCustomTransform: "urn:registered:in:transform"

詳細な例については、GitHub の Java プロバイダ スターター プロジェクトをご覧ください。

ジョブビルダーでのプロバイダの使用

プロバイダで定義した変換は、Cloud Storage からインポートしてジョブビルダーで使用できます。ジョブビルダーでプロバイダを使用するには:

  1. プロバイダを YAML ファイルとして Cloud Storage に保存します。

    [Cloud Storage] に移動

  2. Google Cloud コンソールの [ジョブ] ページに移動します。

    [ジョブ] に移動

  3. [ビルダーからジョブを作成] をクリックします。

  4. [YAML Providers] セクションを見つけます。スクロールが必要な場合があります。

  5. [YAML プロバイダのパス] ボックスに、プロバイダ ファイルがある Cloud Storage の場所を入力します。

  6. プロバイダが読み込まれるのを待ちます。プロバイダが有効な場合、プロバイダで定義された変換が [読み込まれた変換] セクションに表示されます。

  7. [読み込まれた変換] セクションで変換の名前を見つけ、[] ボタンをクリックしてジョブに変換を挿入します。

  8. 変換にパラメータが必要な場合は、変換の YAML 変換構成エディタでパラメータを定義します。パラメータは、パラメータ名をパラメータ値にマッピングする YAML オブジェクトとして定義する必要があります。

次のステップ