Esegui il connettore mainframe in modalità autonoma

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

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:

  1. 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.

  2. 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.
  3. Esegui il deployment del nuovo job utilizzando il comando seguente:

    gcloud run jobs replace job.yaml
    
  4. 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>"