O YAML do Apache Beam permite-lhe agrupar e reutilizar transformações através de fornecedores de YAML do Beam. Os fornecedores permitem-lhe encapsular transformações numa unidade reutilizável que pode importar nas suas pipelines YAML do Beam. As transformações YAML, Python e Java Apache Beam podem ser todas incluídas desta forma.
Com o criador de tarefas, pode carregar fornecedores do Cloud Storage para os usar na sua tarefa.
Fornecedores de escrita
Os fornecedores de YAML do Beam são definidos em ficheiros YAML. Estes ficheiros especificam a implementação e a configuração das transformações fornecidas. As fichas de fornecedores individuais são expressas como itens de lista YAML com chaves type
e config
. Os fornecedores de Java e Python também têm uma chave config
que especifica a implementação da transformação. As implementações de fornecedores definidas em YAML são expressas inline.
Fornecedores de YAML
Os fornecedores de YAML definem novas transformações de YAML como um mapa de nomes para transformar definições. Por exemplo, este fornecedor define uma transformação que eleva ao quadrado um campo da respetiva entrada:
- type: yaml
transforms:
SquareElement:
body:
type: chain
transforms:
- type: MapToFields
config:
language: python
append: true
fields:
power: "element ** 2"
Os fornecedores de YAML também podem especificar parâmetros de transformação com uma chave config_schema
na definição de transformação e usar estes parâmetros através da criação de modelos 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, tem de 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}}
Fornecedores de Python
As transformações Python podem ser fornecidas através da seguinte sintaxe:
- type: pythonPackage
config:
packages:
- pypi_package>=version
transforms:
MyCustomTransform: "pkg.module.PTransformClassOrCallable"
Para ver um exemplo detalhado, consulte o projeto inicial do fornecedor Python no GitHub.
Fornecedores de Java
As transformações Java podem ser fornecidas através da seguinte sintaxe:
- type: javaJar
config:
jar: gs://your-bucket/your-java-transform.jar
transforms:
MyCustomTransform: "urn:registered:in:transform"
Para ver um exemplo detalhado, consulte o projeto inicial do fornecedor Java no GitHub.
Usar fornecedores no criador de trabalhos
As transformações definidas nos fornecedores podem ser importadas do Cloud Storage e usadas no criador de tarefas. Para usar um fornecedor no criador de tarefas:
Guarde um fornecedor como um ficheiro YAML no Cloud Storage.
Aceda à página Tarefas na Google Cloud consola.
Clique em
Criar tarefa a partir do criador.Localize a secção Fornecedores YAML. Pode ter de deslocar a página.
Na caixa Caminho do fornecedor YAML, introduza a localização do Cloud Storage do ficheiro do fornecedor.
Aguarde que o fornecedor seja carregado. Se o fornecedor for válido, as transformações definidas no fornecedor aparecem na secção Transformações carregadas.
Localize o nome da transformação na secção Transformações carregadas e clique no botão
para inserir a transformação no trabalho.Se a transformação exigir parâmetros, defina-os no editor de configuração de transformação YAML para a transformação. Os parâmetros devem ser definidos como um objeto YAML que mapeia os nomes dos parâmetros para os valores dos parâmetros.
O que se segue?
- Saiba mais sobre os fornecedores de YAML do Beam.