Eseguire Mainframe Connector 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 di Mainframe Connector 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 in locale sul mainframe e semplifica l'integrazione dell'analisi del file QSAM (Queued Sequential Access Method) del mainframe nei flussi di lavoro ETL (Extract, Transform and Load) 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 risorsa Google Cloud che vuoi utilizzare.
  • 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:

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

  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 job Cloud Run. I nomi dei job devono avere una lunghezza massima di 49 caratteri e devono essere univoci per 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 del file YAML che hai creato nel passaggio precedente.
  3. Esegui il deployment del nuovo job utilizzando il seguente comando:

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