Pacchettizzare e importare le trasformazioni

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:

  1. Salva un fornitore come file YAML in Cloud Storage.

    Vai a Cloud Storage

  2. Vai alla pagina Job nella console Google Cloud .

    Vai a Job

  3. Fai clic su Crea job da builder.

  4. Individua la sezione Provider YAML. Potrebbe essere necessario scorrere.

  5. Nella casella Percorso del provider YAML, inserisci la posizione Cloud Storage del file del provider.

  6. Attendi il caricamento del fornitore. Se il provider è valido, le trasformazioni definite nel provider verranno visualizzate nella sezione Trasformazioni caricate.

  7. Individua il nome della trasformazione nella sezione Trasformazioni caricate e fai clic sul pulsante per inserirla nel job.

  8. 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