הרצת Mainframe Connector במצב עצמאי

ב-Mainframe Connector מגרסה 5.13.0 ואילך יש תמיכה בהרצת Mainframe Connector כמשימה עצמאית ב- Google Cloud. התכונה הזו מאפשרת להריץ את Mainframe Connector כמשימת אצווה בקונטיינר, למשל כמשימת Cloud Run, כמשימת Google Kubernetes Engine או בתוך קונטיינר Docker. האפשרות הזו עוזרת לכם להימנע מהתקנה מקומית של Mainframe Connector במחשב המרכזי, ומקלה עליכם לשלב את ניתוח הקבצים של שיטת הגישה הרציפה בתור (QSAM) במחשב המרכזי בתהליכי עבודה קיימים של חילוץ, טרנספורמציה וטעינה (ETL).

כשמשתמשים בגרסה העצמאית של Mainframe Connector, צריך להגדיר את תהליך העבודה של ETL שמעלה את קובץ ה-QSAM אל Google Cloud .

לפני שמתחילים

  • פריסת Mainframe Connector ב-Cloud Run.
  • יוצרים חשבון שירות או מזהים חשבון שירות קיים לשימוש עם Mainframe Connector. לחשבון השירות הזה צריכות להיות הרשאות גישה למאגרי Cloud Storage, למערכי נתונים של BigQuery ולכל משאב אחר שרוצים להשתמש בו. Google Cloud
  • מוודאים שלחשבון השירות שיצרתם מוקצה התפקיד Cloud Run Invoker.
  • מוודאים שהנתונים במחשב המרכזי כבר זמינים ב- Google Cloud כקובץ QSAM.

קידוד מחדש של נתונים באמצעות Mainframe Connector במצב עצמאי ב-Cloud Run

‫Mainframe Connector מספק שתי דרכים להפעלת Mainframe Connector כמשימה עצמאית ב- Google Cloud:

היתרונות של פקודות qsam

הפקודות qsam מספקות את היתרונות הבאים:

  • תמיכה בסוגי נתונים מורכבים, כולל פסוקית OCCURS (רשימות), פסוקית REDEFINES ורשומות מקוננות. מידע נוסף על סוגי הנתונים האלה זמין במאמרים בנושא qsam וvsam המרת קידוד.
  • תמיכה בהגדרת תהליך המרת הקידוד באמצעות קובץ הגדרות של המרת הקידוד. היכולת הזו מאפשרת גמישות רבה יותר בפענוח הנתונים ל- Google Cloud, ובקידוד הנתונים בחזרה למחשב המרכזי.
  • תמיכה ביצירה של מערך נתונים של שגיאות, שהוא טבלה של שגיאות המרת קידוד שאפשר להשתמש בה כדי לבדוק שגיאות.
  • תמיכה בפורמטים שונים של קלט ופלט. היכולת הזו מאפשרת לכם לטעון את הנתונים שלכם למחסני נתונים שונים וממחסני נתונים שונים.

הפעלת Mainframe Connector במצב עצמאי באמצעות פקודות qsam

כדי לבצע טרנסקוד של הנתונים באמצעות Mainframe Connector במצב עצמאי באמצעות פקודות qsam, פועלים לפי השלבים הבאים:

  1. יוצרים קובץ YAML עם פקודות לביצוע הפעולות הבאות:

    • קריאת מערך הנתונים
    • להמיר את הקידוד שלו לפורמט נתמך
    • העלאה ל-Cloud Storage

    מערך הנתונים של הקלט חייב להיות קובץ QSAM עם אורך רשומה קבוע או משתנה. אפשר להשתמש בקובץ ה-YAML לדוגמה הבא כדי לקרוא את מערך הנתונים, לשנות את הקידוד שלו לפורמט ORC ולהעלות אותו ל-Cloud Storage.

    בדוגמה הבאה, אנחנו משתמשים ב-Cloud Storage DataPath עבור INFILE, OUTFILE, COPYBOOK ו-TRANSCODE_CONFIGURATION.

    environmentVariables:
    - name: "INFILE"
      value: "INFILE"
    - name: "OUTFILE"
      value: "OUTFILE"
    - name: "COPYBOOK"
      value: "COPYBOOK"
    - name: "TRANSCODE_CONFIGURATION"
      value: "TRANSCODE_CONFIGURATION"
    - name: "LOG_PROJECT"
      value: "LOG_PROJECT"
    - name: "IBM_JAVA_OPTIONS"
      value: "-XX:+UseContainerSupport"
    
    command:
      qsam decode $INFILE $OUTFILE
      --copybook $COPYBOOK
      --transcode-configuration ${TRANSCODE_CONFIGURATION}
      --output-format orc
      --parallelism 8
      --chunk-size "512Mib"
    

    מחליפים את מה שכתוב בשדות הבאים:

    • INFILE: השם של קובץ הקלט.
    • OUTFILE: השם של קובץ הפלט.
    • COPYBOOK_PATH: הנתיב ל-DD של קובץ ההעתקה.
    • TRANSCODE_CONFIGURATION_PATH: הנתיב לקובץ התצורה של הקידוד מחדש.
    • LOG_PROJECT: השם של פרויקט היומן.

    קובץ YAML לדוגמה:

    environmentVariables:
    - name: "INFILE"
      value: "gs://my_bucket/my/input.dat"
    - name: "OUTFILE"
      value: "gs://my_bucket/my/output.orc"
    - name: "COPYBOOK"
      value: "gs://my_bucket/my/copybook.cpy"
    - name: "TRANSCODE_CONFIGURATION"
      value: "gs://my_bucket/my/transcode-configuration-file.json"
    - name: "LOG_PROJECT"
      value: "the log project"
    - name: "IBM_JAVA_OPTIONS"
      value: "-XX:+UseContainerSupport"
    command:
      qsam decode $INFILE $OUTFILE
      --copybook $COPYBOOK
      --transcode-configuration ${TRANSCODE_CONFIGURATION}
      --output-format orc
      --parallelism 8
      --chunk-size "512Mib"
    
  2. יוצרים קובץ job.yaml באמצעות הפקודה הבאה.

    kind: Job
    metadata:
      name: JOB
    spec:
      template:
        spec:
          template:
            spec:
              containers:
              - image: IMAGE
                command:
                - bash
                - /opt/mainframe-connector/standalone.sh
                - --argsFrom
                - LOCATION_OF_THE_COMMAND_YAML_FILE
    

    מחליפים את מה שכתוב בשדות הבאים:

    • JOB: השם של המשימה ב-Cloud Run. שמות המשרות צריכים להיות באורך של עד 49 תווים, והם צריכים להיות ייחודיים לכל אזור ולכל פרויקט.
    • IMAGE: כתובת ה-URL של קובץ אימג' של קונטיינר המשימות, לדוגמה, us-docker.pkg.dev/cloudrun/container/job:latest.
    • LOCATION_OF_THE_COMMAND_YAML_FILE: המיקום של קובץ ה-YAML שיצרתם בשלב הקודם.
  3. מפעילים את הג'וב החדש באמצעות הפקודה הבאה:

    gcloud run jobs replace job.yaml
    
  4. מריצים את העבודה באמצעות הפקודה הבאה:

    gcloud run jobs execute JOB_NAME

    מחליפים את JOB_NAME בשם של המשימה.

מידע נוסף על יצירה והפעלה של משימת Cloud Run זמין במאמרים יצירת משימה חדשה והפעלת משימה.

הפעלת Mainframe Connector במצב עצמאי באמצעות הפקודה gsutil cp

כדי לבצע המרת קידוד של הנתונים באמצעות Mainframe Connector במצב Standalone באמצעות הפקודה gsutil cp, פועלים לפי השלבים הבאים:

  1. יוצרים קובץ YAML עם פקודות לביצוע הפעולות הבאות:

    • קריאת מערך הנתונים
    • קידוד מחדש ל-ORC
    • העלאה ל-Cloud Storage

    מערך הנתונים של הקלט חייב להיות קובץ QSAM עם אורך רשומה קבוע או משתנה. אפשר להשתמש בקובץ ה-YAML לדוגמה הבא כדי לקרוא את מערך הנתונים, לשנות את הקידוד שלו לפורמט ORC ולהעלות אותו ל-Cloud Storage.

    בדוגמה הבאה, הנתונים נקראים ממערך הנתונים INFILE, ופריסת הרשומה נקראת מ-COPYBOOK DD.

    environmentVariables:
    - name: "INFILE"
      value: "INFILE"
    - name: "INFILE_DSN"
      value: "INFILE_DSN"
    - name: "GCSDSNURI"
      value: "INFILE_DSN_FILEPATH"
    - name: "COPYBOOK"
      value: "COPYBOOK_FILEPATH"
    - name: "LOG_PROJECT"
      value: "LOG_PROJECT"
    - name: "IBM_JAVA_OPTIONS"
      value: "-XX:+UseContainerSupport"
    command:
      gsutil cp gs://outputbucket/output
      --parallelism 8
      --maxChunkSize "512Mib"
      --parser_type=copybook
    

    מחליפים את מה שכתוב בשדות הבאים:

    • INFILE: השם של קובץ הקלט.
    • INFILE_DSN: השם של קובץ קלט של שם מקור הנתונים (DSN).
    • INFILE_DSN_FILEPATH: הנתיב לקובץ ה-DSN של הקלט.
    • COPYBOOK_FILEPATH: הנתיב ל-DD של קובץ ההעתקה.
    • LOG_PROJECT: השם של פרויקט היומן.

    קובץ YAML לדוגמה:

      environmentVariables:
      - name: "INFILE"
        value: "input.dat"
      - name: "INFILE_DSN"
        value: "input.dat"
      - name: "GCSDSNURI"
        value: "gs://inputbucket/inputfolder"
      - name: "COPYBOOK"
        value: "gs://inputbucket/copybook.cpy"
      - name: "LOG_PROJECT"
        value: "the log project"
      - name: "IBM_JAVA_OPTIONS"
        value: "-XX:+UseContainerSupport"
      command:
        gsutil cp gs://outputbucket/output
        --parallelism 8
        --maxChunkSize "512Mib"
        --parser_type=copybook
    

    רשימה מלאה של משתני הסביבה שנתמכים על ידי Mainframe Connector מופיעה במאמר משתני סביבה.

    אם רוצים לתעד את הפקודות שהופעלו במהלך התהליך הזה, אפשר להפעיל את סטטיסטיקת הטעינה.

  2. יוצרים קובץ job.yaml באמצעות הפקודה הבאה.

    kind: Job
    metadata:
      name: JOB
    spec:
      template:
        spec:
          template:
            spec:
              containers:
              - image: IMAGE
                command:
                - bash
                - /opt/mainframe-connector/standalone.sh
                - --argsFrom
                - LOCATION_OF_THE_COMMAND_YAML_FILE
    

    מחליפים את מה שכתוב בשדות הבאים:

    • JOB: השם של המשימה ב-Cloud Run. שמות המשרות צריכים להיות באורך של עד 49 תווים, והם צריכים להיות ייחודיים לכל אזור ולכל פרויקט.
    • IMAGE: כתובת ה-URL של קובץ אימג' של קונטיינר המשימות, לדוגמה, us-docker.pkg.dev/cloudrun/container/job:latest.
    • LOCATION_OF_THE_COMMAND_YAML_FILE: המיקום של קובץ ה-YAML שיצרתם בשלב הקודם.
  3. מפעילים את הג'וב החדש באמצעות הפקודה הבאה:

    gcloud run jobs replace job.yaml
    
  4. מריצים את העבודה באמצעות הפקודה הבאה:

    gcloud run jobs execute JOB_NAME

    מחליפים את JOB_NAME בשם של המשימה.

מידע נוסף על יצירה והפעלה של משימת Cloud Run זמין במאמרים יצירת משימה חדשה והפעלת משימה.

ייצוא טבלת BigQuery למערך נתונים במחשב מרכזי

כדי לייצא טבלה ב-BigQuery למערך נתונים במחשב מרכזי, צריך ליצור קובץ YAML שמריץ קריאת SQL מקובץ QUERY DD, ולייצא את מערך הנתונים שמתקבל ל-Cloud Storage כקובץ בינארי, באופן הבא.

השלבים ליצירה ולהרצה של עבודת Cloud Run זהים לאלה שמופיעים בקטע קידוד מחדש של נתונים באמצעות Mainframe Connector במצב עצמאי ב-Cloud Run. ההבדל היחיד הוא בהוראות שמצוינות בקובץ ה-YAML. יש שתי דרכים לייצא טבלה מ-BigQuery באמצעות Mainframe Connector:

  • שימוש בפקודות qsam (גרסה 5.16.0 ואילך)
  • שימוש בפקודה bq export

שימוש בפקודות qsam

environmentVariables:
  - name: "QUERY"
    value: "QUERY_PATH"
  - name: "OUTFILE"
    value: "OUTFILE"
  - name: "COPYBOOK"
    value: "COPYBOOK_PATH"
  - name: "TRANSCODE_CONFIGURATION"
    value: "TRANSCODE_CONFIGURATION_PATH"
  - name: "PROJECT_ID"
    value: "PROJECT_ID"
  - name: "LOCATION"
    value: "LOCATION"
  - name: "LOG_PROJECT"
    value: "LOG_PROJECT"
  - name: "IBM_JAVA_OPTIONS"
    value: "-XX:+UseContainerSupport"
command:
qsam encode \
  $QUERY
  $OUTFILE
  --copybook ${COPYBOOK_PATH}
  --transcode-configuration ${TRANSCODE_CONFIGURATION_PATH}
  --input-format=BIGQUERY \
  --input-parameter project_id=${PROJECT_ID} \
  --input-parameter location=${LOCATION}

מחליפים את מה שכתוב בשדות הבאים:

  • QUERY_PATH: שאילתת ה-SQL להרצה. התוצאה של השאילתה תעבור קידוד לקובץ בינארי.
  • OUTFILE: קטגוריית Cloud Storage שתכיל את קובץ הפלט הבינארי.
  • COPYBOOK_PATH: הנתיב ל-DD של קובץ ההעתקה.
  • TRANSCODE_CONFIGURATION_PATH: הנתיב לקובץ ההגדרות של הטרנסקודר.
  • LOG_PROJECT: השם של פרויקט היומן.
  • PROJECT_ID: מזהה הפרויקט שבו רוצים להריץ את השאילתה.
  • LOCATION: אזור או אזור מרובה שבו השאילתה תופעל. מומלץ להריץ את השאילתה במיקום שקרוב לנתונים. ערך ברירת המחדל הוא US.

קובץ YAML לדוגמה:

environmentVariables:
- name: "QUERY"
  value: "gs://my_bucket/my/input.sql"
- name: "OUTFILE"
  value: "gs://my_bucket/my/output.orc"
- name: "COPYBOOK"
  value: "gs://my_bucket/my/copybook.cpy"
- name: "TRANSCODE_CONFIGURATION"
  value: "gs://my_bucket/my/transcode-configuration-file.json"
- name: "PROJECT_ID"
  value: "my-project"
- name: "LOCATION"
  value: "US"
- name: "LOG_PROJECT"
  value: "my-log-project"
- name: "IBM_JAVA_OPTIONS"
  value: "-XX:+UseContainerSupport"
  command:
  qsam encode \
    $QUERY
    $OUTFILE
    --copybook ${COPYBOOK_PATH}
    --transcode-configuration ${TRANSCODE_CONFIGURATION_PATH}
    --input-format=BIGQUERY \
    --input-parameter project_id=${PROJECT_ID} \
    --input-parameter location=${LOCATION}

שימוש בפקודה bq export

environmentVariables:
- name: "COPYBOOK"
  value: "COPYBOOK_FILEPATH"
- name: "LOG_PROJECT"
  value: "LOG_PROJECT"
- name: "IBM_JAVA_OPTIONS"
  value: "-XX:+UseContainerSupport"
command:
  bq export --project_id="PROJECT_NAME" --location="LOCATION" --sql="select * from project.dataset.table" --bucket="BUCKET"

מחליפים את מה שכתוב בשדות הבאים:

  • COPYBOOK_FILEPATH: הנתיב ל-DD של קובץ ההעתקה.
  • LOG_PROJECT: השם של פרויקט היומן.
  • PROJECT_NAME: שם הפרויקט שבו רוצים להריץ את השאילתה.
  • LOCATION: המיקום שבו השאילתה תופעל. מומלץ להריץ את השאילתה במיקום שקרוב לנתונים.
  • BUCKET: ה-URI של Cloud Storage שיכיל את קובץ הפלט הבינארי.

קובץ YAML לדוגמה:

environmentVariables:
- name: "COPYBOOK"
  value: "gs://inputbucket/copybook.cpy"
- name: "LOG_PROJECT"
  value: "my-log-project"
- name: "IBM_JAVA_OPTIONS"
  value: "-XX:+UseContainerSupport"
command:
  bq export --project_id="my-project" --run_mode="gcsoutput" --location=US --sql="select * from project.dataset.table" --bucket="gs://outputbucket/data.dat"