软件包和导入转换

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

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

写作提供程序

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

后续步骤