Mainframe Connector im Standalone-Modus ausführen

Auf dieser Seite wird beschrieben, 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ändiger Job auf Google Cloud. Mit diesem Feature 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 wird es dadurch einfacher, das Parsen von QSAM-Dateien (Queued Sequential Access Method) in vorhandene ETL-Workflows (Extract, Transform, Load) zu integrieren.

Wenn Sie die Standalone-Version des Mainframe Connector 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 ermitteln Sie ein vorhandenes Dienstkonto, das Sie mit Mainframe Connector verwenden möchten. 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.
  • Prüfen Sie, ob dem von Ihnen erstellten Dienstkonto die Rolle „Cloud Run Invoker“ zugewiesen ist.
  • Die Mainframedaten müssen bereits als QSAM-Datei auf Google Cloud verfügbar sein.

Daten mit dem Mainframe-Connector im Standalone-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 finden Sie in der qsam-Transcodierungsreferenz.
  • Unterstützt die Konfiguration des Transcodierungsprozesses über eine Transcoder-Konfigurationsdatei. Diese Funktion bietet mehr Flexibilität beim Decodieren von Daten in Google Cloudund beim erneuten Codieren der Daten für den Mainframe.
  • Unterstützt die Erstellung eines Spillover-Datasets, einer Tabelle mit Transcodierungsfehlern, die zur Fehlerbehebung verwendet werden kann.
  • Unterstützt mehrere Ein- und Ausgabeformate. Mit dieser Funktion können Sie Daten in verschiedene Data Warehouses laden und daraus abrufen.

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

So transcodieren Sie Ihre Daten mit Mainframe Connector im Standalone-Modus mit qsam-Befehlen:

  1. Erstellen Sie eine YAML-Datei mit Befehlen für Folgendes:

    Das Eingabedataset muss eine QSAM-Datei mit fester oder variabler Datensatzlänge sein. Mit der folgenden Beispiel-YAML-Datei können Sie Ihren Datensatz lesen, ihn in das ORC-Format transkodieren und in Cloud Storage hochladen.

    Im folgenden Beispiel verwenden wir den Cloud Storage-Bucket 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 zur Copybook-DD.
    • TRANSCODE_CONFIGURATION_PATH: Der Pfad zur Transcodierungs-Konfigurationsdatei.
    • LOG_PROJECT: Der Name des Logprojekts.

    Hier sehen Sie 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 im Standalone-Modus mit dem Befehl gsutil cp ausführen

So transcodieren Sie Ihre Daten mit Mainframe Connector im Standalone-Modus mit dem Befehl gsutil cp:

  1. Erstellen Sie eine YAML-Datei mit Befehlen für Folgendes:

    • Dataset lesen
    • In ORC transkodieren
    • In Cloud Storage hochladen

    Das Eingabe-Dataset muss eine QSAM-Datei mit fester oder variabler Datensatzlänge sein. Mit der folgenden Beispiel-YAML-Datei können Sie Ihren Datensatz lesen, ihn 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: "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 Eingabedatei für den Datenquellennamen (Data Source Name, DSN).
    • INFILE_DSN_FILEPATH: Der Pfad zur DSN-Eingabedatei.
    • COPYBOOK_FILEPATH: Der Pfad zur Copybook-DD.
    • LOG_PROJECT: Der Name des Logprojekts.

    Hier sehen Sie 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 ein Mainframe-Dataset exportieren, indem Sie eine YAML-Datei erstellen, die einen SQL-Lesevorgang aus der QUERY DD-Datei ausführt und das resultierende Dataset als Binärdatei in Cloud Storage exportiert.

Die Schritte zum Erstellen und Ausführen des Cloud Run-Jobs sind dieselben wie im Abschnitt Daten mit Mainframe Connector im Standalone-Modus in Cloud Run transcodieren beschrieben. Der einzige Unterschied sind die in der YAML-Datei erwähnten Anweisungen. Mainframe Connector bietet zwei Möglichkeiten zum Exportieren von BigQuery-Tabelle:

  • 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 auszuführende SQL-Abfrage. Das Ergebnis der Abfrage wird in einer Binärdatei codiert.
  • OUTFILE: Der Cloud Storage-Bucket, der die binäre Ausgabedatei enthält.
  • COPYBOOK_PATH: Der Pfad zur Copybook-DD.
  • TRANSCODE_CONFIGURATION_PATH: Der Pfad zur Transcoder-Konfigurationsdatei.
  • LOG_PROJECT: Der Name des Logprojekts.
  • 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 haben empfohlen, die Abfrage an einem Ort auszuführen, der sich in der Nähe der Daten befindet. Der Standardwert ist „US“.

Hier sehen Sie 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}

bq export-Befehl 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 zur Copybook-DD.
  • LOG_PROJECT: Der Name des Logprojekts.
  • 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-URI, der die binäre Ausgabedatei enthält.

Hier sehen Sie 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="gs://outputbucket/data.dat"