ב-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(גרסה 5.16.0 ואילך) - שימוש בפקודה
gsutil cp
היתרונות של פקודות qsam
הפקודות qsam מספקות את היתרונות הבאים:
- תמיכה בסוגי נתונים מורכבים, כולל פסוקית OCCURS (רשימות), פסוקית REDEFINES ורשומות מקוננות. מידע נוסף על סוגי הנתונים האלה זמין במאמרים בנושא
qsamוvsamהמרת קידוד. - תמיכה בהגדרת תהליך המרת הקידוד באמצעות קובץ הגדרות של המרת הקידוד. היכולת הזו מאפשרת גמישות רבה יותר בפענוח הנתונים ל- Google Cloud, ובקידוד הנתונים בחזרה למחשב המרכזי.
- תמיכה ביצירה של מערך נתונים של שגיאות, שהוא טבלה של שגיאות המרת קידוד שאפשר להשתמש בה כדי לבדוק שגיאות.
- תמיכה בפורמטים שונים של קלט ופלט. היכולת הזו מאפשרת לכם לטעון את הנתונים שלכם למחסני נתונים שונים וממחסני נתונים שונים.
הפעלת Mainframe Connector במצב עצמאי באמצעות פקודות qsam
כדי לבצע טרנסקוד של הנתונים באמצעות Mainframe Connector במצב עצמאי באמצעות פקודות qsam, פועלים לפי השלבים הבאים:
יוצרים קובץ 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"יוצרים קובץ
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 שיצרתם בשלב הקודם.
מפעילים את הג'וב החדש באמצעות הפקודה הבאה:
gcloud run jobs replace job.yaml
מריצים את העבודה באמצעות הפקודה הבאה:
gcloud run jobs execute JOB_NAME
מחליפים את JOB_NAME בשם של המשימה.
מידע נוסף על יצירה והפעלה של משימת Cloud Run זמין במאמרים יצירת משימה חדשה והפעלת משימה.
הפעלת Mainframe Connector במצב עצמאי באמצעות הפקודה gsutil cp
כדי לבצע המרת קידוד של הנתונים באמצעות Mainframe Connector במצב Standalone באמצעות הפקודה gsutil cp, פועלים לפי השלבים הבאים:
יוצרים קובץ 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 מופיעה במאמר משתני סביבה.
אם רוצים לתעד את הפקודות שהופעלו במהלך התהליך הזה, אפשר להפעיל את סטטיסטיקת הטעינה.
יוצרים קובץ
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 שיצרתם בשלב הקודם.
מפעילים את הג'וב החדש באמצעות הפקודה הבאה:
gcloud run jobs replace job.yaml
מריצים את העבודה באמצעות הפקודה הבאה:
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"