Auf dieser Seite erfahren Sie, wie Sie Mainframe-Daten lokal auf dem Mainframe in das Format Optimized Row Columnar (ORC) umwandeln und die Inhalte dann in BigQuery verschieben.
Bei der Transcodierung werden Informationen von einer codierten Darstellungsform in eine andere umgewandelt, in diesem Fall in ORC. ORC ist ein spaltenorientiertes Open-Source-Datenformat, das häufig in Verbindung mit Apache Hadoop genutzt wird und von BigQuery unterstützt wird.
Hinweise
Installieren Sie den Mainframe-Connector auf jedem Mainframe-partitionierten Datensatz, den Sie als Verfahrensbibliothek (PROCLIB) verwenden möchten.
Lokal auf dem Mainframe transkodierte Daten zu Google Cloud verschieben
Wenn Sie Daten lokal auf einem Mainframe transkodieren und dann in BigQuery verschieben möchten, müssen Sie die folgenden Aufgaben ausführen:
- Ein Dataset auf einem Mainframe lesen und transkodieren und im ORC-Format in Cloud Storage hochladen Die Transcodierung erfolgt während des
cp
-Vorgangs, bei dem ein EBCDIC-Datensatz (Extended Binary Coded Decimal Interchange Code) eines Mainframes beim Kopieren in einen Cloud Storage-Bucket in das ORC-Format in UTF-8 konvertiert wird. - Laden Sie das Dataset in eine BigQuery-Tabelle.
- Optional: Führen Sie eine SQL-Abfrage für die BigQuery-Tabelle aus.
- Optional: Daten aus BigQuery zurück zum Mainframe exportieren.
Gehen Sie dazu so vor:
Erstellen Sie einen Job, um den Datensatz auf Ihrem Mainframe zu lesen und in das ORC-Format zu transkodieren. Gehen Sie dazu so vor: Lesen Sie die Daten aus dem INFILE-Dataset und das Datensatzlayout aus dem COPYBOOK-DD. Der Eingabedatensatz muss eine QSAM-Datei (Queued Sequential Access Method) mit fester oder variabler Datensatzlänge sein.
//STEP01 EXEC BQSH //INFILE DD DSN=<HLQ>.DATA.FILENAME,DISP=SHR //COPYBOOK DD DISP=SHR,DSN=<HLQ>.COPYBOOK.FILENAME //STDIN DD * BUCKET=BUCKET_NAME gsutil cp --replace gs://$BUCKET/tablename.orc /*
Ersetzen Sie Folgendes:
BUCKET_NAME
: Der Name des Cloud Storage-Bucket, in den Sie Mainframe-Daten kopieren möchten.
Um Variablen wie Projekt-IDs und Bucket-Namen nicht in jeder JCL-Prozedur (Job Control Language) angeben zu müssen, können Sie sie in der BQSH PROCLIB hinzufügen und sie als Umgebungsvariablen in mehreren JCL-Prozeduren verwenden. Dieser Ansatz ermöglicht auch einen nahtlosen Übergang zwischen Produktions- und Nicht-Produktionsumgebungen, da Umgebungsvariablen in der BQSH PROCLIB der Umgebung festgelegt werden. Eine vollständige Liste der vom Mainframe-Connector unterstützten Umgebungsvariablen finden Sie unter Umgebungsvariablen.
In diesem Beispiel werden die Standardeingaben (STDIN) als In-Stream-Daten an das STDIN-DD übergeben. Alternativ können Sie diese Eingabe auch mit einem Datenquellennamen (DSN) angeben, was die Symbolsubstitution erleichtert.
Wenn Sie die während dieses Vorgangs ausgeführten Befehle protokollieren möchten, können Sie Ladestatistiken aktivieren.
Erstellen und senden Sie einen BigQuery-Ladejob, mit dem ORC-Dateipartitionen von
my_table.orc
nachMY_DATASET.MY_TABLE
geladen werden. Gehen Sie dazu so vor:Example JCL //STEP02 EXEC BQSH //STDIN DD * PROJECT=PROJECT_NAME bq load --project_id=$PROJECT \ myproject:DATASET.TABLE \ gs://bucket/tablename.orc/* /*
Ersetzen Sie Folgendes:
PROJECT_NAME
: der Name des Projekts, in dem Sie die Abfrage ausführen möchten.
Optional: Erstellen und senden Sie einen BigQuery-Abfragejob, der eine SQL-Leseoperation aus der QUERY-DD-Datei ausführt. Normalerweise handelt es sich bei der Abfrage um eine
MERGE
- oderSELECT INTO DML
-Anweisung, die zur Transformation einer BigQuery-Tabelle führt. Hinweis: Der Mainframe Connector protokolliert Jobmesswerte, schreibt Abfrageergebnisse aber nicht in eine Datei.Sie können BigQuery auf verschiedene Arten abfragen: inline, mit einem separaten Dataset mit DD oder mit einem separaten Dataset mit DSN.
Example JCL //STEP03 EXEC BQSH //QUERY DD DSN=<HLQ>.QUERY.FILENAME,DISP=SHR //STDIN DD * PROJECT=PROJECT_NAME LOCATION=LOCATION bq query --project_id=$PROJECT \ --location=$LOCATION/* /*
Ersetzen Sie Folgendes:
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.
Optional: Erstellen und senden Sie einen Exportjob, der eine SQL-Leseoperation aus der QUERY-DD-Datei ausführt und den resultierenden Datensatz als Binärdatei auf einen Mainframe exportiert.
Example JCL //STEP04 EXEC BQSH //OUTFILE DD DSN=<HLQ>.DATA.FILENAME,DISP=SHR //COPYBOOK DD DISP=SHR,DSN=<HLQ>.COPYBOOK.FILENAME //QUERY DD DSN=<HLQ>.QUERY.FILENAME,DISP=SHR //STDIN DD * PROJECT=PROJECT_NAME DATASET_ID=DATASET_ID DESTINATION_TABLE=DESTINATION_TABLE bq export --project_id=$PROJECT \ --dataset_id=$DATASET_ID \ --destination_table=$DESTINATION_TABLE \ --location="US" \ --remoteHost <mainframe-connector-url>.a.run.app \ --remotePort 443 /*
Ersetzen Sie Folgendes:
PROJECT_NAME
: Der Name des Projekts, in dem Sie die Abfrage ausführen möchten.DATASET_ID
: Die BigQuery-Dataset-ID, die die Tabelle enthält, die Sie exportieren möchten.DESTINATION_TABLE
: Die BigQuery-Tabelle, die Sie exportieren möchten.
Die Daten werden in das Dataset OUTFILE DD exportiert. Das Datensatzlayout wird durch das COPYBOOK-DD beschrieben.