Mengemas dan mengimpor transformasi

YAML Apache Beam memungkinkan Anda mengemas dan menggunakan kembali transformasi melalui penyedia YAML Beam. Penyedia memungkinkan Anda merangkum transformasi ke dalam unit yang dapat digunakan kembali yang kemudian dapat Anda impor dalam pipeline YAML Beam. Transformasi Apache Beam YAML, Python, dan Java dapat dipaketkan dengan cara ini.

Dengan builder tugas, Anda dapat memuat penyedia dari Cloud Storage untuk menggunakannya dalam tugas.

Penyedia layanan penulisan

Penyedia YAML Beam ditentukan dalam file YAML. File ini menentukan penerapan dan konfigurasi transformasi yang disediakan. Listingan penyedia individual dinyatakan sebagai item daftar YAML dengan kunci type dan config. Penyedia Java dan Python juga memiliki kunci config yang menentukan penerapan transformasi. Implementasi penyedia yang ditentukan YAML dinyatakan secara inline.

Penyedia YAML

Penyedia YAML menentukan transformasi YAML baru sebagai peta nama ke definisi transformasi. Misalnya, penyedia ini menentukan transformasi yang menguadratkan kolom dari inputnya:

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

Penyedia YAML juga dapat menentukan parameter transformasi dengan kunci config_schema dalam definisi transformasi dan menggunakan parameter ini menggunakan templat 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}}"

Jika fungsi transformasi yang diberikan berfungsi sebagai sumber, fungsi tersebut harus menetapkan requires_inputs: false:

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

Anda juga dapat menentukan transformasi gabungan:

- 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}}

Penyedia Python

Transformasi Python dapat diberikan menggunakan sintaksis berikut:

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

Untuk contoh mendalam, lihat project awal penyedia Python di GitHub.

Penyedia Java

Transformasi Java dapat diberikan menggunakan sintaksis berikut:

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

Untuk contoh mendalam, lihat project starter penyedia Java di GitHub.

Menggunakan penyedia di pembuat tugas

Transformasi yang ditentukan di penyedia dapat diimpor dari Cloud Storage dan digunakan di builder tugas. Untuk menggunakan penyedia di builder tugas:

  1. Simpan penyedia sebagai file YAML di Cloud Storage.

    Buka Cloud Storage

  2. Buka halaman Jobs di konsol Google Cloud .

    Buka Tugas

  3. Klik Buat tugas dari builder.

  4. Temukan bagian Penyedia YAML. Anda mungkin perlu men-scroll.

  5. Di kotak Jalur penyedia YAML, masukkan lokasi Cloud Storage file penyedia.

  6. Tunggu hingga penyedia dimuat. Jika penyedia valid, transformasi yang ditentukan di penyedia akan muncul di bagian Transformasi yang dimuat.

  7. Temukan nama transformasi Anda di bagian Transformasi yang dimuat, lalu klik tombol untuk menyisipkan transformasi dalam tugas Anda.

  8. Jika transformasi Anda memerlukan parameter, tentukan parameter tersebut di editor konfigurasi transformasi YAML untuk transformasi Anda. Parameter harus ditentukan sebagai objek YAML yang memetakan nama parameter ke nilai parameter.

Langkah berikutnya