Apache Beam YAML consente di creare pacchetti e riutilizzare le trasformazioni tramite i provider Beam YAML. I provider consentono di incapsulare le trasformazioni in un'unità riutilizzabile che puoi importare nelle pipeline Beam YAML. Le trasformazioni YAML, Python e Java Apache Beam possono essere tutte pacchettizzate in questo modo.
Con il generatore di job, puoi caricare i fornitori da Cloud Storage per utilizzarli nel tuo job.
Fornitori di servizi di scrittura
I provider Beam YAML sono definiti nei file YAML. Questi file specificano l'implementazione e la configurazione delle trasformazioni fornite. I singoli elenchi di fornitori sono espressi come elementi di elenco YAML con chiavi type
e config
. I provider Java e Python hanno anche una chiave config
che specifica l'implementazione della trasformazione. Le implementazioni del provider definite in YAML sono espresse in linea.
Provider YAML
I provider YAML definiscono nuove trasformazioni YAML come una mappa di nomi per trasformare le definizioni. Ad esempio, questo fornitore definisce una trasformazione che eleva al quadrato un campo del relativo input:
- type: yaml
transforms:
SquareElement:
body:
type: chain
transforms:
- type: MapToFields
config:
language: python
append: true
fields:
power: "element ** 2"
I provider YAML possono anche specificare i parametri di trasformazione con una chiave config_schema
nella definizione di trasformazione e utilizzare questi parametri utilizzando la templatizzazione 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 una trasformazione fornita funge da origine, deve impostare requires_inputs: false
:
- type: yaml
transforms:
CreateTestElements:
requires_inputs: false
body: |
type: Create
config:
elements: [1,2,3,4]
È anche possibile definire trasformazioni composite:
- 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}}
Fornitori Python
Le trasformazioni Python possono essere fornite utilizzando la seguente sintassi:
- type: pythonPackage
config:
packages:
- pypi_package>=version
transforms:
MyCustomTransform: "pkg.module.PTransformClassOrCallable"
Per un esempio dettagliato, consulta il progetto iniziale del provider Python su GitHub.
Fornitori Java
Le trasformazioni Java possono essere fornite utilizzando la seguente sintassi:
- type: javaJar
config:
jar: gs://your-bucket/your-java-transform.jar
transforms:
MyCustomTransform: "urn:registered:in:transform"
Per un esempio dettagliato, consulta il progetto iniziale del provider Java su GitHub.
Utilizzo dei fornitori nel generatore di job
Le trasformazioni definite nei provider possono essere importate da Cloud Storage e utilizzate nel builder dei job. Per utilizzare un fornitore nel generatore di job:
Salva un fornitore come file YAML in Cloud Storage.
Vai alla pagina Job nella console Google Cloud .
Fai clic su
Crea job da builder.Individua la sezione Provider YAML. Potrebbe essere necessario scorrere.
Nella casella Percorso del provider YAML, inserisci la posizione Cloud Storage del file del provider.
Attendi il caricamento del fornitore. Se il provider è valido, le trasformazioni definite nel provider verranno visualizzate nella sezione Trasformazioni caricate.
Individua il nome della trasformazione nella sezione Trasformazioni caricate e fai clic sul pulsante
per inserirla nel job.Se la trasformazione richiede parametri, definiscili nell'editor Configurazione della trasformazione YAML per la trasformazione. I parametri devono essere definiti come oggetto YAML che mappa i nomi dei parametri ai valori dei parametri.
Passaggi successivi
- Scopri di più sui provider YAML di Beam.