Mit Apache Beam YAML können Sie Transformationen über Beam YAML-Anbieter verpacken und wiederverwenden. Mit Anbietern können Sie Transformationen in eine wiederverwendbare Einheit einbetten, die Sie dann in Ihre Beam-YAML-Pipelines importieren können. YAML-, Python- und Java-Apache Beam-Transformationen können alle auf diese Weise verpackt werden.
Mit dem Job Builder können Sie Anbieter aus Cloud Storage laden, um sie in Ihrem Job zu verwenden.
Anbieter von Schreibdiensten
Beam-YAML-Anbieter werden in YAML-Dateien definiert. In diesen Dateien werden die Implementierung und Konfiguration der bereitgestellten Transformationen angegeben. Einzelne Anbieter werden als YAML-Listenelemente mit den Schlüsseln type
und config
angegeben. Java- und Python-Anbieter haben auch einen config
-Schlüssel, der die Transformationsimplementierung angibt. YAML-definierte Anbieterimplementierungen werden inline angegeben.
YAML-Anbieter
In YAML-Anbietern werden neue YAML-Transformationen als Zuordnung von Namen zu Transformationsdefinitionen definiert. Dieser Anbieter definiert beispielsweise eine Transformation, die ein Feld aus der Eingabe quadriert:
- type: yaml
transforms:
SquareElement:
body:
type: chain
transforms:
- type: MapToFields
config:
language: python
append: true
fields:
power: "element ** 2"
YAML-Anbieter können auch Transformationsparameter mit einem config_schema
-Schlüssel in der Transformationsdefinition angeben und diese Parameter mit Jinja2-Vorlagen verwenden:
- 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}}"
Wenn eine bereitgestellte Transformation als Quelle fungiert, muss sie requires_inputs: false
festlegen:
- type: yaml
transforms:
CreateTestElements:
requires_inputs: false
body: |
type: Create
config:
elements: [1,2,3,4]
Es ist auch möglich, zusammengesetzte Transformationen zu definieren:
- 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}}
Python-Anbieter
Python-Transformationen können mit der folgenden Syntax bereitgestellt werden:
- type: pythonPackage
config:
packages:
- pypi_package>=version
transforms:
MyCustomTransform: "pkg.module.PTransformClassOrCallable"
Ein ausführliches Beispiel finden Sie im Python-Anbieter-Starterprojekt auf GitHub.
Java-Anbieter
Java-Transformationen können mit der folgenden Syntax bereitgestellt werden:
- type: javaJar
config:
jar: gs://your-bucket/your-java-transform.jar
transforms:
MyCustomTransform: "urn:registered:in:transform"
Ein ausführliches Beispiel finden Sie im Java-Anbieter-Starterprojekt auf GitHub.
Anbieter im Job-Builder verwenden
In Anbietern definierte Transformationen können aus Cloud Storage importiert und im Job-Builder verwendet werden. So verwenden Sie einen Anbieter im Job Builder:
Speichern Sie einen Anbieter als YAML-Datei in Cloud Storage.
Rufen Sie in der Google Cloud -Console die Seite Jobs auf.
Klicken Sie auf
Job mit dem Builder erstellen.Suchen Sie den Abschnitt YAML-Anbieter. Eventuell müssen Sie scrollen.
Geben Sie im Feld YAML-Anbieterpfad den Cloud Storage-Speicherort der Anbieterdatei ein.
Warten Sie, bis der Anbieter geladen wurde. Wenn der Anbieter gültig ist, werden die im Anbieter definierten Transformationen im Abschnitt Geladene Transformationen angezeigt.
Suchen Sie im Bereich Geladene Transformationen nach dem Namen der Transformation und klicken Sie auf die Schaltfläche
, um die Transformation in den Job einzufügen.Wenn für Ihre Transformation Parameter erforderlich sind, definieren Sie sie im Editor YAML-Transformationskonfiguration für Ihre Transformation. Parameter sollten als YAML-Objekt definiert werden, das Parameternamen Parameterwerten zuordnet.