חבילות וייבוא של טרנספורמציות

‫Apache Beam YAML מאפשר לארוז טרנספורמציות ולעשות בהן שימוש חוזר באמצעות ספקי Beam YAML. ספקי נתונים מאפשרים לכם להכניס טרנספורמציות ליחידה לשימוש חוזר, שאותה תוכלו לייבא לצינורות Beam YAML. אפשר לארוז כך את כל הטרנספורמציות של YAML,‏ Python ו-Java Apache Beam.

באמצעות הכלי ליצירת משימות, אפשר לטעון ספקים מ-Cloud Storage כדי להשתמש בהם במשימה.

ספקי כתיבה

ספקי Beam YAML מוגדרים בקובצי YAML. הקבצים האלה מציינים את ההטמעה וההגדרה של הטרנספורמציות שסופקו. כרטיסי מוצר של ספקים בודדים מופיעים כפריטים ברשימת YAML עם מפתחות type ו-config. לספקי Java ו-Python יש גם מפתח config שמציין את הטמעת הטרנספורמציה. הטמעות של ספקים שמוגדרים ב-YAML מוצגות בשורה.

ספקי YAML

ספקי YAML מגדירים טרנספורמציות חדשות של YAML כמיפוי של שמות להגדרות של טרנספורמציות. לדוגמה, הספק הזה מגדיר טרנספורמציה שמעלה בריבוע שדה מהקלט שלו:

- type: yaml
  transforms:
    SquareElement:
      body:
        type: chain
        transforms:
          - type: MapToFields
            config:
              language: python
              append: true
              fields:
                power: "element ** 2"

ספקי YAML יכולים גם לציין פרמטרים של טרנספורמציה באמצעות מפתח config_schema בהגדרת הטרנספורמציה, ולהשתמש בפרמטרים האלה באמצעות תבניות 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}}"

אם טרנספורמציה שסופקה פועלת כמקור, צריך להגדיר את requires_inputs: false:

- type: yaml
  transforms:
    CreateTestElements:
      requires_inputs: false
      body: |
        type: Create
        config:
          elements: [1,2,3,4]

אפשר גם להגדיר טרנספורמציות מורכבות:

- 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

אפשר לספק טרנספורמציות של Python באמצעות התחביר הבא:

- type: pythonPackage
  config:
    packages:
      - pypi_package>=version
  transforms:
    MyCustomTransform: "pkg.module.PTransformClassOrCallable"

דוגמה מפורטת אפשר לראות בפרויקט התחלה של ספק Python ב-GitHub.

ספקי Java

אפשר לספק טרנספורמציות של Java באמצעות התחביר הבא:

- type: javaJar
  config:
    jar: gs://your-bucket/your-java-transform.jar
  transforms:
    MyCustomTransform: "urn:registered:in:transform"

דוגמה מפורטת מופיעה בפרויקט התחלה של ספק Java ב-GitHub.

שימוש בספקים בכלי ליצירת משרות

אפשר לייבא טרנספורמציות שמוגדרות בספקים מ-Cloud Storage ולהשתמש בהן בכלי ליצירת משימות. כדי להשתמש בספק בכלי ליצירת משרות:

  1. שומרים ספק כקובץ YAML ב-Cloud Storage.

    כניסה ל-Cloud Storage

  2. נכנסים לדף Jobs במסוף Google Cloud .

    מעבר לדף Jobs

  3. לוחצים על Create job from builder (יצירת משימה מבונה).

  4. מאתרים את הקטע ספקי YAML. יכול להיות שתצטרכו לגלול.

  5. בתיבה YAML provider path (נתיב ספק YAML), מזינים את המיקום של קובץ הספק ב-Cloud Storage.

  6. מחכים שהספק ייטען. אם הספק תקין, הטרנספורמציות שהוגדרו אצל הספק יופיעו בקטע Loaded transforms(טרנספורמציות שנטענו).

  7. מאתרים את שם הטרנספורמציה בקטע Loaded transforms (טרנספורמציות שנטענו) ולוחצים על הלחצן כדי להוסיף את הטרנספורמציה לעבודה.

  8. אם הטרנספורמציה דורשת פרמטרים, צריך להגדיר אותם בכלי לעריכת הגדרות הטרנספורמציה ב-YAML. הפרמטרים צריכים להיות מוגדרים כמיפוי של אובייקט YAML בין שמות הפרמטרים לערכי הפרמטרים.

המאמרים הבאים