Questa pagina spiega come installare Mainframe Connector su Cloud Run, transcodificare i dati, salvarli in BigQuery ed esportarli da BigQuery.
Mainframe Connector versione 5.13.0 e successive supporta l'esecuzione di Mainframe Connector come job autonomo su Google Cloud. Questa funzionalità consente di eseguire Mainframe Connector come job batch containerizzato, ad esempio come job Cloud Run, job Google Kubernetes Engine o all'interno di un container Docker. Questa opzione ti consente di evitare di installare Mainframe Connector localmente sul mainframe e semplifica la gestione dell'analisi del file QSAM (metodo di accesso sequenziale in coda) del mainframe nei flussi di lavoro ETL (estrazione, trasformazione e caricamento) esistenti.
Quando utilizzi la versione autonoma di Mainframe Connector, devi configurare autonomamente il flusso di lavoro ETL che carica il file QSAM in Google Cloud .
Prima di iniziare
- Esegui il deployment di Mainframe Connector in Cloud Run.
- Crea un account di servizio o identifica un account di servizio esistente da utilizzare con Mainframe Connector. Questo account di servizio deve disporre delle autorizzazioni per accedere ai bucket Cloud Storage, ai set di dati BigQuery e a qualsiasi altra Google Cloud risorsa che vuoi utilizzare.
- Assicurati che all'account di servizio che hai creato sia assegnato il ruolo Invoker di Cloud Run.
- Assicurati che i dati mainframe siano già disponibili su Google Cloud come file QSAM.
Transcodifica dei dati utilizzando Mainframe Connector in modalità autonoma su Cloud Run
Mainframe Connector offre due modi per eseguire Mainframe Connector come job autonomo su Google Cloud:
- Utilizzare i comandi
qsam
(release 5.16.0 e successive) - Utilizzare il comando
gsutil cp
Vantaggi dei comandi qsam
I comandi qsam
offrono i seguenti vantaggi:
- Supporta i tipi di dati composti, tra cui la clausola OCCURS (elenchi), la clausola REDEFINES e i record nidificati. Per ulteriori informazioni su questi tipi di dati, consulta la documentazione di riferimento sulla transcodifica di
qsam
. - Supporta la configurazione del processo di transcodifica tramite un file di configurazione del transcoder. Ciò offre una maggiore flessibilità durante la decodifica dei dati in Google Cloude la loro ricodifica nel mainframe.
- Supporta la creazione di un set di dati spillover, ovvero una tabella di errori di transcodifica che può essere utilizzata per l'ispezione degli errori.
Esegui Mainframe Connector in modalità autonoma utilizzando i comandi qsam
Per transcodificare i dati utilizzando Mainframe Connector in modalità autonoma
con i comandi qsam
, segui questi passaggi:
Crea un file YAML con i comandi per leggere il set di dati, transcodificarlo nel formato ORC e caricarlo su Cloud Storage. Il set di dati di input deve essere un file QSAM con lunghezza del record fissa o variabile. Puoi utilizzare il seguente file YAML di esempio per leggere il set di dati, transcodificarlo in formato ORC e caricarlo su Cloud Storage.
Nel seguente esempio, utilizziamo
DataPath
di Cloud Storage perINFILE
,OUTFILE
,COPYBOOK
eTRANSCODE_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"
Sostituisci quanto segue:
INFILE
: il nome del file di input.OUTFILE
: il nome del file di output.COPYBOOK_PATH
: il percorso del file DD del libro mastro.TRANSCODE_CONFIGURATION_PATH
: il percorso del file di configurazione della transcodifica.LOG_PROJECT
: il nome del progetto di log.
Di seguito è riportato un esempio di file YAML:
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"
Crea un file
job.yaml
con il seguente comando.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
Sostituisci quanto segue:
- JOB: il nome del job Cloud Run. I nomi dei job devono avere una lunghezza massima di 49 caratteri e devono essere univoci per regione e progetto.
- IMAGE: l'URL dell'immagine del contenitore del job, ad esempio
us-docker.pkg.dev/cloudrun/container/job:latest
. - LOCATION_OF_THE_COMMAND_YAML_FILE: la posizione del file YAML creato nel passaggio precedente.
Esegui il deployment del nuovo job utilizzando il seguente comando:
gcloud run jobs replace job.yaml
Esegui il job utilizzando il seguente comando:
gcloud run jobs execute JOB_NAME
Sostituisci JOB_NAME con il nome del job.
Per ulteriori informazioni sulla creazione ed esecuzione di un job Cloud Run, consulta Creare un nuovo job e Eseguire un job.
Esegui Mainframe Connector in modalità autonoma utilizzando il comando gsutil cp
Per transcodificare i dati utilizzando Mainframe Connector in modalità autonoma con il comando gsutil cp
:
Crea un file YAML con i comandi per leggere il set di dati, transcodificarlo nel formato ORC e caricarlo su Cloud Storage. Il set di dati di input deve essere un file QSAM con lunghezza del record fissa o variabile. Puoi utilizzare il seguente file YAML di esempio per leggere il set di dati, transcodificarlo in formato ORC e caricarlo su Cloud Storage.
Nell'esempio seguente, leggi i dati dal set di dati INFILE e il layout dei record da COPYBOOK DD.
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
Sostituisci quanto segue:
INFILE
: il nome del file di input.INFILE_DSN
: il nome del file del nome dell'origine dati (DSN) di input.INFILE_DSN_FILEPATH
: il percorso del file DSN di input.COPYBOOK_FILEPATH
: il percorso del file DD del libro mastro.LOG_PROJECT
: il nome del progetto di log.
Di seguito è riportato un esempio di file YAML:
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
Per l'elenco completo delle variabili di ambiente supportate da Mainframe Connector, consulta Variabili di ambiente.
Se vuoi registrare i comandi eseguiti durante questa procedura, puoi abilitare le statistiche di caricamento.
Crea un file
job.yaml
con il seguente comando.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
Sostituisci quanto segue:
- JOB: il nome del job Cloud Run. I nomi dei job devono avere una lunghezza massima di 49 caratteri e devono essere univoci per regione e progetto.
- IMAGE: l'URL dell'immagine del contenitore del job, ad esempio
us-docker.pkg.dev/cloudrun/container/job:latest
. - LOCATION_OF_THE_COMMAND_YAML_FILE: la posizione del file YAML creato nel passaggio precedente.
Esegui il deployment del nuovo job utilizzando il seguente comando:
gcloud run jobs replace job.yaml
Esegui il job utilizzando il seguente comando:
gcloud run jobs execute JOB_NAME
Sostituisci JOB_NAME con il nome del job.
Per ulteriori informazioni sulla creazione ed esecuzione di un job Cloud Run, consulta Creare un nuovo job e Eseguire un job.
Esportare la tabella BigQuery nel set di dati mainframe
Puoi esportare la tabella BigQuery nel set di dati mainframe creando un file YAML che esegue una lettura SQL dal file DD QUERY e esporta il set di dati risultante in Cloud Storage come file binario, come segue.
I passaggi per creare ed eseguire il job Cloud Run sono gli stessi indicati nella sezione Transcodificare i dati utilizzando Mainframe Connector in modalità autonoma su Cloud Run. L'unica differenza è nelle istruzioni menzionate nel file YAML. Mainframe Connector offre due modi per esportare la tabella BigQuery:
- Utilizzo dei comandi
qsam
(release 5.16.0 e successive) Utilizzo del comando
bq export
Utilizza i comandi qsam
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
Sostituisci quanto segue:
QUERY_PATH
: la query SQL da eseguire. Il risultato della query verrà codificato in un file binario.OUTFILE
: il bucket Cloud Storage che conterrà il file binario di output.COPYBOOK_PATH
: il percorso del file DD del libro mastro.TRANSCODE_CONFIGURATION_PATH
: il percorso del file di configurazione del transcoder.LOG_PROJECT
: il nome del progetto di log.PROJECT_ID
: l'ID progetto in cui vuoi eseguire la query.LOCATION
: la regione o le regioni in cui verrà eseguita la query. Ti consigliamo di eseguire la query in una posizione vicino ai dati. Il valore predefinito è US.
Di seguito è riportato un esempio di file YAML:
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
Utilizzare il comando bq export
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"
Sostituisci quanto segue:
COPYBOOK_FILEPATH
: il percorso del file DD del libro mastro.LOG_PROJECT
: il nome del progetto di log.PROJECT_NAME
: il nome del progetto in cui vuoi eseguire la query.LOCATION
: la posizione in cui verrà eseguita la query. Ti consigliamo di eseguire la query in una posizione vicina ai dati.BUCKET
: il bucket Cloud Storage che conterrà il file binario di output.
Di seguito è riportato un esempio di file YAML:
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"