Auf dieser Seite wird erläutert, wie Sie Mainframe-Daten lokal auf der Mainframe in das ORC-Format (Optimized Row Columnar) geändert, und den Inhalt dann nach 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.
Hinweis
Mainframe-Connector installieren in ein nach Mainframe partitioniertes Dataset, das Sie als Prozedurbibliothek verwenden möchten (PROCLIB)
Lokal im Mainframe transcodierte 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. mit einem erweiterten binär codierten Dezimal-Interchange Code (EBCDIC) für Mainframes wird das Dataset während des Kopiervorgangs in das ORC-Format in UTF-8 konvertiert. Cloud Storage-Bucket. - Laden Sie das Dataset in eine BigQuery-Tabelle.
- Optional: Führen Sie eine SQL-Abfrage für die BigQuery-Tabelle aus.
- (Optional) Exportieren Sie Daten aus BigQuery zurück in den Mainframe.
So führen Sie diese Aufgaben aus:
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 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-Buckets, in den Sie Mainframe-Daten kopieren möchten.
Damit Sie nicht in jeder JCL-Prozedur (Job Control Language) Variablen wie Projekt-IDs und Bucket-Namen angeben müssen, können Sie sie in der BQSH PROCLIB hinzufügen und als Umgebungsvariablen in mehreren JCL-Prozeduren darauf verweisen. 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 Umgebungsvariablen die vom Mainframe-Connector unterstützt werden, finden Sie unter Umgebungsvariablen.
In diesem Beispiel wird die Standardeingabe (Standard Input, STDIN) bereitgestellt. als In-Stream-Daten an den STDIN DD übergeben. Alternativ können Sie diese Eingabe auch mit einem Datenquellennamen (DSN) angeben, was die Symbolsubstitution vereinfacht.
Wenn Sie die während dieses Vorgangs ausgeführten Befehle protokollieren möchten, können Sie die 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 einen SQL-Lesevorgang ausführt die DD-Datei QUERY. In der Regel ist die Abfrage
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. Es empfiehlt sich, die Abfrage an einem Ort in der Nähe des Daten.
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 um die Abfrage auszuführen.DATASET_ID
: Die BigQuery-Dataset-ID, die enthält die Tabelle, 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.