Auf dieser Seite wird erläutert, wie Sie den Mainframe-Connector Cloud Run verwenden, Daten transcodieren, in BigQuery speichern und exportieren aus BigQuery.
Mainframe-Connector-Version 5.13.0 und höher unterstützt das Ausführen Mainframe-Connector als eigenständiger Job in Google Cloud. Mit dieser Funktion können Sie Mainframe Connector als containerisierten Batchjob ausführen, z. B. als Cloud Run-Job, Google Kubernetes Engine-Job oder in einem Docker-Container. Mit dieser Option müssen Sie den Mainframe Connector nicht lokal auf Ihrem Mainframe installieren. Außerdem können Sie das Parsen von QSAM-Dateien (Queued Sequential Access Method) für Mainframes einfacher in bestehende ETL-Workflows (Extract, Transform, Load) einbinden.
Wenn Sie die eigenständige Version des Mainframe-Connectors verwenden, müssen Sie den ETL-Workflow, mit dem die QSAM-Datei in Google Cloud geladen wird, selbst einrichten.
Hinweis
- Mainframe-Connector in Cloud Run bereitstellen
- Erstellen Sie ein Dienstkonto oder legen Sie ein Vorhandenes Dienstkonto für die Verwendung mit dem Mainframe-Connector. Dieses Dienstkonto muss Berechtigungen für den Zugriff auf Cloud Storage-Buckets, BigQuery-Datasets und alle anderen Google Cloud-Ressourcen haben, die Sie verwenden möchten.
- Achten Sie darauf, dass dem von Ihnen erstellten Dienstkonto die Rolle Cloud Run-Aufrufer zugewiesen ist.
- Achten Sie darauf, dass die Mainframe-Daten bereits als QSAM in Google Cloud verfügbar sind -Datei.
Daten mit dem Mainframe-Connector im eigenständigen Modus in Cloud Run transkodieren
So transcodierst du deine Daten mit dem Mainframe-Connector im eigenständigen Modus:
Erstellen Sie eine YAML-Datei mit Befehlen zum Lesen des Datasets und transcodieren Sie es in die ORC-Format und laden Sie es in Cloud Storage hoch. Das Eingabe-Dataset muss ein QSAM-Datei mit fester oder variabler Datensatzlänge Mit der folgenden Beispiel-YAML-Datei können Sie Ihren Datensatz lesen, in das ORC-Format transkodieren und in Cloud Storage hochladen.
Im folgenden Beispiel werden die Daten aus dem INFILE-Dataset und das Datensatzlayout aus dem COPYBOOK-DD gelesen.
environmentVariables: - name: "INFILE" value: <var>"INFILE"</var> - name: "INFILE_DSN" value: <var>"INFILE_DSN"</var> - name: "GCSDSNURI" value: <var>"INFILE_DSN_FILEPATH"</var> - name: "COPYBOOK" value: <var>"COPYBOOK_FILEPATH"</var> - name: "LOG_PROJECT" value: <var>"LOG_PROJECT"</var> - name: "IBM_JAVA_OPTIONS" value: "-XX:+UseContainerSupport" command: gsutil cp gs://outputbucket/output --parallelism 8 --maxChunkSize "512Mib" --parser_type=copybook
Ersetzen Sie Folgendes:
INFILE
: Der Name der Eingabedatei.INFILE_DSN
: Der Name der DSN-Datei (Datenquellenname).INFILE_DSN_FILEPATH
: Der Pfad zur DSN-Eingabedatei.COPYBOOK_FILEPATH
: Der Pfad zum Copybook-DD.LOG_PROJECT
: Der Name des Protokollprojekts.
Hier sehen Sie eine YAML-Beispieldatei:
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
Eine vollständige Liste der Umgebungsvariablen, die von Mainframe-Connector: siehe Umgebungsvariablen.
Wenn Sie die während dieses Vorgangs ausgeführten Befehle protokollieren möchten, können Sie die Ladestatistiken aktivieren.
Erstellen Sie mit dem folgenden Befehl eine
job.yaml
-Datei.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
Ersetzen Sie Folgendes:
- JOB durch den Namen Ihres Cloud Run-Jobs. Jobnamen dürfen maximal 49 Zeichen lang sein und pro Region und Projekt eindeutig sein.
- IMAGE durch die URL des Job-Container-Images, z. B.
us-docker.pkg.dev/cloudrun/container/job:latest
. - LOCATION_OF_THE_COMMAND_YAML_FILE durch den Standort des YAML-Datei, die Sie im vorherigen Schritt erstellt haben.
Stellen Sie den neuen Job mit dem folgenden Befehl bereit:
gcloud run jobs replace job.yaml
Führen Sie den Job mit dem folgenden Befehl aus:
gcloud run jobs execute JOB_NAME
Ersetzen Sie JOB_NAME durch den Namen des Jobs.
Weitere Informationen zum Erstellen und Ausführen eines Cloud Run-Jobs finden Sie unter Neuen Job erstellen und Job ausführen.
BigQuery-Tabelle in Mainframe-Dataset exportieren
Sie können die BigQuery-Tabelle in ein Mainframe-Dataset exportieren, indem Sie eine YAML-Datei erstellen Datei, die einen SQL-Lesevorgang aus der QUERY DD-Datei ausführt, und exportiert das resultierende Dataset als Binärdatei in Cloud Storage folgt.
Die Schritte zum Erstellen und Ausführen des Cloud Run-Jobs entsprechen denen im Abschnitt Daten mit dem Mainframe-Connector im eigenständigen Modus in Cloud Run transkodieren. Der einzige Unterschied ist die Anleitung wie in der YAML-Datei erwähnt.
environmentVariables:
- name: "COPYBOOK"
value: "<var>COPYBOOK_FILEPATH</var>"
- name: "LOG_PROJECT"
value: "<var>LOG_PROJECT</var>"
- name: "IBM_JAVA_OPTIONS"
value: "-XX:+UseContainerSupport"
command:
bq export --project_id="<var>PROJECT_NAME</var>" --location=<var>LOCATION</var> --sql="select * from project.dataset.table" --bucket="<var>BUCKET</var>"
Ersetzen Sie Folgendes:
COPYBOOK_FILEPATH
: Der Pfad zum Copybook-DD.LOG_PROJECT
: Der Name des Logprojekts.PROJECT_NAME
: der Name des Projekts, in dem Sie um die Abfrage auszuführen.LOCATION
: Der Ort, an dem die Abfrage ausgeführt wird. Es empfiehlt sich, die Abfrage an einem Ort in der Nähe des Daten.BUCKET
: Der Cloud Storage-Bucket, der die die Binärdatei der Ausgabe enthalten.
Hier ist eine Beispiel-YAML-Datei:
environmentVariables:
- name: "COPYBOOK"
value: "gs://inputbucket/copybook.cpy"
- name: "LOG_PROJECT"
value: "the log project"
- name: "IBM_JAVA_OPTIONS"
value: "-XX:+UseContainerSupport"
command:
bq export --project_id="<var>PROJECT_NAME</var>" --location=US --sql="select * from project.dataset.table" --bucket="<var>BUCKET</var>"