Mainframe Connector im Standalone-Modus ausführen

Mainframe Connector Version 5.13.0 und höher unterstützt die Ausführung 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 und können die Analyse von QSAM-Dateien (Queued Sequential Access Method) einfacher in vorhandene ETL-Workflows (Extract, Transform, Load) einbinden.

Wenn Sie die eigenständige Version von Mainframe Connector verwenden, müssen Sie den ETL-Workflow selbst einrichten, der die QSAM-Datei inlädt. Google Cloud

Hinweis

  • Mainframe Connector in Cloud Run bereitstellen.
  • Erstellen Sie ein Dienstkonto oder ermitteln 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.
  • Prüfen Sie, ob dem erstellten Dienstkonto die Rolle „Cloud Run Invoker“ zugewiesen ist.
  • Prüfen Sie, ob die Mainframe-Daten bereits als QSAM Datei auf Google Cloud verfügbar sind.

Daten mit Mainframe Connector im eigenständigen Modus in Cloud Run transcodieren

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ützung für zusammengesetzte Datentypen, einschließlich der Klausel OCCURS (Listen), der Klausel REDEFINES und verschachtelter Datensätze. Weitere Informationen zu diesen Datentypen finden Sie unter qsam und vsam transcoding reference.
  • Unterstützung für die Konfiguration des Transcodierungsprozesses über eine Transcodierungskonfigurationsdatei. Diese Funktion bietet mehr Flexibilität beim Decodieren von Daten in Google Cloud, und beim Codieren der Daten zurück zum Mainframe.
  • Unterstützung für die Erstellung eines Überlauf-Datasets, einer Tabelle mit Transcodierungsfehlern, die zur Fehlerprüfung verwendet werden kann.
  • Unterstützung für mehrere Eingabe- und Ausgabeformate. Mit dieser Funktion können Sie Ihre Daten in und aus verschiedenen Data Warehouses laden.

Mainframe Connector im eigenständigen Modus mit qsam-Befehlen ausführen

So transcodieren Sie Ihre Daten mit Mainframe Connector im eigenständigen Modus mit qsam-Befehlen:

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

    Das Eingabe-Dataset muss eine QSAM-Datei mit fester oder variabler Datensatzlänge sein. Mit der folgenden YAML-Beispieldatei können Sie Ihr Dataset lesen, in das ORC-Format transcodieren und in Cloud Storage hochladen.

    Im folgenden Beispiel verwenden wir den Cloud Storage 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 Logprojekts.

    Hier ist eine YAML-Beispieldatei:

    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 müssen pro Region und Projekt eindeutig sein.
    • 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 eigenständigen Modus mit dem Befehl gsutil cp ausführen

So transcodieren Sie Ihre Daten mit Mainframe Connector im eigenständigen Modus mit dem Befehl gsutil cp:

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

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

    Das Eingabe-Dataset muss eine QSAM-Datei mit fester oder variabler Datensatzlänge sein. Mit der folgenden YAML-Beispieldatei können Sie Ihr Dataset lesen, in das ORC-Format transcodieren 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 Eingabe-DSN-Datei.
    • COPYBOOK_FILEPATH: Der Pfad zum Copybook-DD.
    • LOG_PROJECT: Der Name des Logprojekts.

    Hier ist 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 von Mainframe Connector unterstützten Umgebungsvariablen finden Sie unter Umgebungsvariablen.

    Wenn Sie die während dieses Prozesses ausgeführten Befehle protokollieren möchten, können Sie die 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 müssen pro Region und Projekt eindeutig sein.
    • 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 eine SQL-Lesevorgang aus der QUERY DD-Datei, ausführt und das resultierende Dataset wie folgt 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 eigenständigen Modus in Cloud Run transcodieren beschrieben. Der einzige Unterschied sind die Anweisungen in der YAML-Datei. Mainframe Connector bietet zwei Möglichkeiten, eine BigQuery-Tabelle zu exportieren:

  • Mit qsam-Befehlen (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 eine Binärdatei codiert.
  • OUTFILE: Der Cloud Storage-Bucket, der die binäre Ausgabedatei enthält.
  • COPYBOOK_PATH: Der Pfad zum Copybook-DD.
  • TRANSCODE_CONFIGURATION_PATH: Der Pfad zur Transcodierungskonfigurationsdatei.
  • LOG_PROJECT: Der Name des Logprojekts.
  • PROJECT_ID: Die Projekt-ID, in der Sie die Abfrage ausführen möchten.
  • LOCATION: Eine 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 „US“.

Hier ist eine YAML-Beispieldatei:

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 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 ist eine YAML-Beispieldatei:

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"