软件包和导入转换

借助 Apache Beam YAML,您可以通过 Beam YAML 提供程序打包和重复使用转换。借助提供程序,您可以将转换封装到可重复使用的单元中,然后将其导入 Beam YAML 流水线。YAML、Python 和 Java Apache Beam 转换都可以以这种方式打包。

借助作业构建器,您可以从 Cloud Storage 加载提供程序,以便在作业中使用它们。

写作提供程序

Beam YAML 提供程序在 YAML 文件中定义。这些文件指定了所提供转换的实现和配置。单个提供程序的列表以 YAML 列表项的形式表示,并包含 type 和 config 键。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. 在 Cloud Storage 中将提供程序保存为 YAML 文件。

    转到 Cloud Storage

  2. 前往 Google Cloud 控制台中的作业页面。

    转到作业

  3. 点击 通过构建器创建作业。

  4. 找到 YAML Providers 部分。您可能需要滚动。

  5. 在 YAML 提供程序路径框中,输入提供程序文件的 Cloud Storage 位置。

  6. 等待提供程序加载。如果提供程序有效,则提供程序中定义的转换将显示在已加载的转换部分中。

  7. 在已加载的转换部分中找到转换的名称,然后点击 按钮将转换插入到作业中。

  8. 如果转换需要参数,请在转换的 YAML 转换配置编辑器中定义这些参数。应将参数定义为将参数名称映射到参数值的 YAML 对象。

后续步骤