Apache Beam YAML te permite empaquetar y reutilizar transformaciones a través de proveedores de Beam YAML. Los proveedores te permiten encapsular transformaciones en una unidad reutilizable que luego puedes importar en tus canalizaciones de Beam YAML. Las transformaciones de Apache Beam en YAML, Python y Java se pueden empaquetar de esta manera.
Con el compilador de trabajos, puedes cargar proveedores desde Cloud Storage para usarlos en tu trabajo.
Proveedores de escritura
Los proveedores de YAML de Beam se definen en archivos YAML. Estos archivos especifican la implementación y la configuración de las transformaciones proporcionadas. Las fichas de proveedores individuales se expresan como elementos de lista en YAML con las claves type
y config
. Los proveedores de Java y Python también tienen una clave config
que especifica la implementación de la transformación. Las implementaciones de proveedores definidas en YAML se expresan intercaladas.
Proveedores de YAML
Los proveedores de YAML definen nuevas transformaciones de YAML como un mapa de nombres para transformar definiciones. Por ejemplo, este proveedor define una transformación que eleva al cuadrado un campo de su entrada:
- type: yaml
transforms:
SquareElement:
body:
type: chain
transforms:
- type: MapToFields
config:
language: python
append: true
fields:
power: "element ** 2"
Los proveedores de YAML también pueden especificar parámetros de transformación con una clave config_schema
en la definición de transformación y usar estos parámetros con la plantilla 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}}"
Si una transformación proporcionada funciona como fuente, debe establecer requires_inputs: false
:
- type: yaml
transforms:
CreateTestElements:
requires_inputs: false
body: |
type: Create
config:
elements: [1,2,3,4]
También es posible definir transformaciones compuestas:
- 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}}
Proveedores de Python
Las transformaciones de Python se pueden proporcionar con la siguiente sintaxis:
- type: pythonPackage
config:
packages:
- pypi_package>=version
transforms:
MyCustomTransform: "pkg.module.PTransformClassOrCallable"
Para ver un ejemplo detallado, consulta el proyecto de inicio del proveedor de Python en GitHub.
Proveedores de Java
Las transformaciones de Java se pueden proporcionar con la siguiente sintaxis:
- type: javaJar
config:
jar: gs://your-bucket/your-java-transform.jar
transforms:
MyCustomTransform: "urn:registered:in:transform"
Para ver un ejemplo detallado, consulta el proyecto de inicio del proveedor de Java en GitHub.
Usa proveedores en el compilador de trabajos
Las transformaciones definidas en los proveedores se pueden importar desde Cloud Storage y usar en el compilador de trabajos. Para usar un proveedor en el compilador de trabajos, haz lo siguiente:
Guarda un proveedor como un archivo YAML en Cloud Storage.
Ve a la página Trabajos en la Google Cloud consola.
Haz clic en
Crear trabajo a partir del compilador.Busca la sección Proveedores de YAML. Es posible que debas desplazarte.
En el cuadro Ruta de acceso del proveedor de YAML, ingresa la ubicación del archivo del proveedor en Cloud Storage.
Espera a que se cargue el proveedor. Si el proveedor es válido, las transformaciones definidas en él aparecerán en la sección Transformaciones cargadas.
Busca el nombre de tu transformación en la sección Loaded transforms y haz clic en el botón
para insertarla en tu trabajo.Si tu transformación requiere parámetros, defínelos en el editor de configuración de transformación de YAML para tu transformación. Los parámetros deben definirse como un objeto YAML que asigne nombres de parámetros a valores de parámetros.
¿Qué sigue?
- Obtén más información sobre los proveedores de YAML de Beam.