Auf dieser Seite erfahren Sie, wie Sie den Mainframe-Connector in Cloud Run installieren, Daten transkodieren, in BigQuery speichern und aus BigQuery exportieren.
Mainframe Connector-Version 5.13.0 und höher unterstützt die Ausführung von Mainframe Connector als eigenständigen 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.
Hinweise
- Mainframe Connector in Cloud Run bereitstellen
- Erstellen Sie ein Dienstkonto oder identifizieren Sie ein vorhandenes Dienstkonto, das mit Mainframe Connector verwendet werden soll. 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 in Google Cloud als QSAM-Datei verfügbar sind.
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 Ihres Datensatzes, zum Transcodieren in das ORC-Format und zum Hochladen in Cloud Storage. Der Eingabedatensatz muss eine QSAM-Datei mit fester oder variabler Datensatzlänge sein. 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 ist eine Beispiel-YAML-Datei:
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 vom Mainframe-Connector unterstützten Umgebungsvariablen finden Sie unter Umgebungsvariablen.
Wenn Sie die während dieses Vorgangs ausgeführten Befehle protokollieren möchten, können Sie 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 nur einmal vorkommen.
- 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 Speicherort der 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 eine BigQuery-Tabelle in einen Mainframe-Datensatz exportieren, indem Sie eine YAML-Datei erstellen, die eine SQL-Leseoperation aus der QUERY-DD-Datei ausführt und den resultierenden Datensatz als Binärdatei in Cloud Storage exportiert. Gehen Sie dazu so vor:
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 sind die Anweisungen in der YAML-Datei.
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 Protokollprojekts.PROJECT_NAME
: Der Name des Projekts, in dem Sie die Abfrage ausführen möchten.LOCATION
: Der Ort, an dem die Abfrage ausgeführt wird. Wir empfehlen, die Abfrage an einem Ort auszuführen, der sich in der Nähe der Daten befindet.BUCKET
: Der Cloud Storage-Bucket, der die Ausgabedatei enthält.
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>"