Mainframe Connector im Standalone-Modus ausführen

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 das Ausführen von Mainframe Connector als eigenständigen Job auf 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 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 vorhandene ETL-Workflows (Extract, Transform, Load) einbinden.

Wenn Sie die eigenständige Version des Mainframe-Connectors verwenden, müssen Sie den ETL-Workflow, der die QSAM-Datei in Google Cloud lädt, 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.
  • Die Mainframe-Daten müssen bereits als QSAM-Datei auf Google Cloud verfügbar sein.

Daten mit dem Mainframe-Connector im eigenständigen Modus in Cloud Run transkodieren

Mainframe Connector bietet zwei Möglichkeiten, Mainframe Connector als eigenständigen Job auf Google Cloudauszuführen:

Vorteile von qsam-Befehlen

Die qsam-Befehle bieten folgende Vorteile:

  • Unterstützt zusammengesetzte Datentypen, einschließlich der OCCURS-Klausel (Listen), der REDEFINES-Klausel und verschachtelter Datensätze. Weitere Informationen zu diesen Datentypen findest du in der qsam-Transcodierungsreferenz.
  • Unterstützt die Konfiguration des Transcodierungsvorgangs über eine Transcoder-Konfigurationsdatei. Das bietet mehr Flexibilität beim Decodieren von Daten in Google Cloudund beim Codieren der Daten zurück in den Mainframe.
  • Unterstützt das Erstellen eines Ausgleichsdatensatzes, einer Tabelle mit Transcodierungsfehlern, die zur Fehlerprüfung verwendet werden kann.

Mainframe Connector mit qsam-Befehlen im Standalone-Modus ausführen

So transcodierst du deine Daten mit dem Mainframe Connector im Standalone-Modus mithilfe von qsam-Befehlen:

  1. 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 umwandeln und in Cloud Storage hochladen.

    Im folgenden Beispiel verwenden wir den Cloud Storage-Speicher DataPath für INFILE, OUTFILE, COPYBOOK und 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"
    

    Ersetzen Sie Folgendes:

    • INFILE: Der Name der Eingabedatei.
    • OUTFILE: Der Name der Ausgabedatei.
    • COPYBOOK_PATH: Der Pfad zum Copybook-DD.
    • TRANSCODE_CONFIGURATION_PATH: Der Pfad zur Transcodierungskonfigurationsdatei.
    • LOG_PROJECT: Der Name des Protokollprojekts.

    Hier ist eine Beispiel-YAML-Datei:

    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. 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: Der Name Ihres Cloud Run-Jobs. Jobnamen dürfen maximal 49 Zeichen lang sein und pro Region und Projekt nur einmal vorkommen.
    • IMAGE: die URL des Job-Container-Images, z. B. us-docker.pkg.dev/cloudrun/container/job:latest.
    • LOCATION_OF_THE_COMMAND_YAML_FILE: der Speicherort der YAML-Datei, die Sie im vorherigen Schritt erstellt haben.
  3. Stellen Sie den neuen Job mit dem folgenden Befehl bereit:

    gcloud run jobs replace job.yaml
    
  4. 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.

Mainframe Connector mit dem Befehl gsutil cp im Standalone-Modus ausführen

So transcodierst du deine Daten mit dem Mainframe Connector im Standalone-Modus und dem Befehl gsutil cp:

  1. 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 umwandeln 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: "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
    

    Ersetzen Sie Folgendes:

    • INFILE: Der Name der Eingabedatei.
    • INFILE_DSN: Der Name der DSN-Datei (Data Source Name).
    • INFILE_DSN_FILEPATH: Der Pfad zur DSN-Datei.
    • 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.

  2. 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: Der Name Ihres Cloud Run-Jobs. Jobnamen dürfen maximal 49 Zeichen lang sein und pro Region und Projekt nur einmal vorkommen.
    • IMAGE: die URL des Job-Container-Images, z. B. us-docker.pkg.dev/cloudrun/container/job:latest.
    • LOCATION_OF_THE_COMMAND_YAML_FILE: der Speicherort der YAML-Datei, die Sie im vorherigen Schritt erstellt haben.
  3. Stellen Sie den neuen Job mit dem folgenden Befehl bereit:

    gcloud run jobs replace job.yaml
    
  4. 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 besteht in den Anweisungen in der YAML-Datei. Der Mainframe-Connector bietet zwei Möglichkeiten, BigQuery-Tabellen zu exportieren:

  • qsam-Befehle verwenden (Version 5.16.0 und höher)
  • Mit dem Befehl bq export

qsam-Befehle verwenden

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

Ersetzen Sie Folgendes:

  • QUERY_PATH: Die SQL-Abfrage, die ausgeführt werden soll. Das Ergebnis der Abfrage wird in eine Binärdatei codiert.
  • OUTFILE: Der Cloud Storage-Bucket, der die Ausgabedatei enthält.
  • COPYBOOK_PATH: Der Pfad zum DD des Copybooks.
  • TRANSCODE_CONFIGURATION_PATH: Der Pfad zur Transcoder-Konfigurationsdatei.
  • LOG_PROJECT: Der Name des Protokollprojekts.
  • PROJECT_ID: Die Projekt-ID, in der Sie die Abfrage ausführen möchten.
  • LOCATION: Die Region oder Multiregion, in der die Abfrage ausgeführt wird. Wir empfehlen, die Abfrage an einem Ort auszuführen, der sich in der Nähe der Daten befindet. Der Standardwert ist „USA“.

Hier ist eine Beispiel-YAML-Datei:

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

Befehl bq export verwenden

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"

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: "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="my-bucket"