Questa pagina spiega come installare Mainframe Connector su Cloud Run, transcodificare i dati, salvarli in BigQuery ed esportarli da BigQuery.
La versione 5.13.0 e successive del connettore mainframe supporta l'esecuzione Connettore mainframe 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 del connettore mainframe su Cloud Run.
- Crea un account di servizio o identifica un l'account di servizio esistente da utilizzare con Mainframe Connector. Questo l'account di servizio deve avere le autorizzazioni per accedere ai bucket Cloud Storage, set di dati BigQuery e qualsiasi altra risorsa Google Cloud per l'utilizzo.
- Assicurati che all'account di servizio che hai creato sia assegnato il ruolo Invoker di Cloud Run.
- Assicurati che i dati del mainframe siano già disponibili su Google Cloud come file QSAM.
Transcodifica dei dati utilizzando Mainframe Connector in modalità autonoma su Cloud Run
Per transcodificare i dati utilizzando Mainframe Connector in modalità autonoma, 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 le seguenti opzioni file YAML di esempio per leggere il set di dati, transcodificarlo nel formato ORC e per caricarlo su Cloud Storage.
Nel seguente esempio, leggi i dati del set di dati INFILE e il layout dei record da COPYBOOK DD.
environmentVariables: - name: "INFILE" value: <var>"INFILE"</var> - name: "INFILE_DSN" value: <var>"INFILE_DSN"</var> - name: "GCSDSNURI" value: <var>"INFILE_DSN_FILEPATH"</var> - name: "COPYBOOK" value: <var>"COPYBOOK_FILEPATH"</var> - name: "LOG_PROJECT" value: <var>"LOG_PROJECT"</var> - 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 dell'elemento DDA nel quaderno.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 Connettore mainframe, vedi 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 con il nome del tuo job Cloud Run. I nomi dei job devono contenere al massimo 49 caratteri e devono essere univoci per ogni regione e progetto.
- IMAGE con l'URL dell'immagine del contenitore del job, ad esempio
us-docker.pkg.dev/cloudrun/container/job:latest
. - LOCATION_OF_THE_COMMAND_YAML_FILE con la posizione YAML che hai creato nel passaggio precedente.
Esegui il deployment del nuovo job utilizzando il comando seguente:
gcloud run jobs replace job.yaml
Esegui il job utilizzando questo comando:
gcloud run jobs execute JOB_NAME
Sostituisci JOB_NAME con il nome del job.
Per ulteriori informazioni sulla creazione e sull'esecuzione di un comando Cloud Run, di un job, vedi Creare un nuovo job e Esegui un job.
Esporta 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 QUERY DD, ed esporta il set di dati risultante in Cloud Storage come file binario, .
I passaggi per creare ed eseguire il job Cloud Run sono gli stessi di menzionato nella sezione Transcodifica i dati utilizzando il connettore mainframe in modalità autonoma su Cloud Run. L'unica differenza sono le istruzioni menzionate nel file YAML.
environmentVariables:
- name: "COPYBOOK"
value: "<var>COPYBOOK_FILEPATH</var>"
- name: "LOG_PROJECT"
value: "<var>LOG_PROJECT</var>"
- name: "IBM_JAVA_OPTIONS"
value: "-XX:+UseContainerSupport"
command:
bq export --project_id="<var>PROJECT_NAME</var>" --location=<var>LOCATION</var> --sql="select * from project.dataset.table" --bucket="<var>BUCKET</var>"
Sostituisci quanto segue:
COPYBOOK_FILEPATH
: il percorso dell'elemento DDA nel quaderno.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 eseguito. 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: "the log project"
- name: "IBM_JAVA_OPTIONS"
value: "-XX:+UseContainerSupport"
command:
bq export --project_id="<var>PROJECT_NAME</var>" --location=US --sql="select * from project.dataset.table" --bucket="<var>BUCKET</var>"