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:
Salve um provedor como um arquivo YAML no Cloud Storage.
Acesse a página Jobs no console Google Cloud .
Clique em
Criar job usando o criador.Localize a seção Provedores de YAML. Talvez seja necessário rolar a tela.
Na caixa Caminho do provedor de YAML, insira o local do arquivo do provedor no Cloud Storage.
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.
Localize o nome da transformação na seção Transformações carregadas e clique no botão
para inserir a transformação no job.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
- Saiba mais sobre os provedores de YAML do Beam.