Empacotar e importar transformações

O Apache Beam YAML permite empacotar e reutilizar transformações usando provedores do Beam YAML. Os provedores permitem encapsular transformações em uma unidade reutilizável que pode ser importada nos pipelines YAML do Beam. As transformações do Apache Beam em YAML, Python e Java podem ser empacotadas dessa forma.

Com o criador de jobs, é possível carregar provedores do Cloud Storage para usar no seu job.

Provedores de escrita

Os provedores YAML do Beam são definidos em arquivos YAML. Esses arquivos especificam a implementação e a configuração das transformações fornecidas. As listagens de provedores individuais são expressas como itens de lista YAML com chaves type e config. Os provedores Java e Python também têm uma chave config que especifica a implementação da transformação. As implementações de provedores definidas em YAML são expressas inline.

Provedores de YAML

Os provedores YAML definem novas transformações YAML como um mapa de nomes para definições de transformação. Por exemplo, esse provedor define uma transformação que eleva ao quadrado um campo da entrada:

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

Os provedores de YAML também podem especificar parâmetros de transformação com uma chave config_schema na definição de transformação e usar esses parâmetros com a criação de modelos do 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}}"

Se uma transformação fornecida funcionar como uma origem, ela precisará definir requires_inputs: false:

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

Também é possível definir transformações compostas:

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

Provedores Python

As transformações do Python podem ser fornecidas usando a seguinte sintaxe:

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

Para um exemplo detalhado, consulte o projeto inicial do provedor Python no GitHub.

Provedores Java

As transformações do Java podem ser fornecidas usando a seguinte sintaxe:

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

Para um exemplo detalhado, consulte o projeto inicial do provedor Java no GitHub.

Como usar provedores no builder de jobs

As transformações definidas em provedores podem ser importadas do Cloud Storage e usadas no criador de jobs. Para usar um provedor no criador de jobs:

  1. Salve um provedor como um arquivo YAML no Cloud Storage.

    Acesse o Cloud Storage

  2. Acesse a página Jobs no console Google Cloud .

    Acessar "Jobs"

  3. Clique em Criar job usando o criador.

  4. Localize a seção Provedores de YAML. Talvez seja necessário rolar a tela.

  5. Na caixa Caminho do provedor de YAML, insira o local do arquivo do provedor no Cloud Storage.

  6. Aguarde o carregamento do provedor. Se o provedor for válido, as transformações definidas nele vão aparecer na seção Transformações carregadas.

  7. Localize o nome da transformação na seção Transformações carregadas e clique no botão para inserir a transformação no job.

  8. Se a transformação exigir parâmetros, defina-os no editor Configuração da transformação YAML. Os parâmetros precisam ser definidos como um objeto YAML que mapeia nomes para valores de parâmetros.

A seguir