Executar o Mainframe Connector no modo independente

Esta página discute como instalar o conector de mainframe no Cloud Run, transcodificar dados, salvá-los no BigQuery e exportá-los do BigQuery.

A versão 5.13.0 e mais recentes do Mainframe Connector oferecem suporte à execução do Mainframe Connector como um job independente no Google Cloud. Esse recurso permite executar o Mainframe Connector como um job em lote contêinerizado, por exemplo, como um job do Cloud Run, do Google Kubernetes Engine ou em um contêiner do Docker. Essa opção ajuda a evitar a instalação local do Conector de mainframe no mainframe e facilita a integração da análise de arquivos do método de acesso sequencial em fila (QSAM, na sigla em inglês) do mainframe a fluxos de trabalho de extração, transformação e carregamento (ETL) existentes.

Ao usar a versão autônoma do conector de mainframe, é necessário configurar o fluxo de trabalho de ETL que carrega o arquivo QSAM para o Google Cloud.

Antes de começar

  • Implantar o Mainframe Connector no Cloud Run.
  • Crie uma conta de serviço ou identifique uma conta de serviço atual para usar com o Mainframe Connector. Essa conta de serviço precisa ter permissões para acessar buckets do Cloud Storage, conjuntos de dados do BigQuery e qualquer outro recurso do Google Cloud que você queira usar.
  • Verifique se a conta de serviço criada recebeu o papel de invocador do Cloud Run.
  • Verifique se os dados do mainframe já estão disponíveis no Google Cloud como um arquivo QSAM.

Transcodificar dados usando o conector de mainframe no modo autônomo no Cloud Run

Para transcodificar seus dados usando o conector de mainframe no modo independente, siga estas etapas:

  1. Crie um arquivo YAML com comandos para ler o conjunto de dados, transcodificar para o formato ORC e fazer upload para o Cloud Storage. O conjunto de dados de entrada precisa ser um arquivo QSAM com comprimento de registro fixo ou variável. Use o arquivo YAML de exemplo abaixo para ler seu conjunto de dados, transcodificar para o formato ORC e fazer o upload para o Cloud Storage.

    No exemplo a seguir, leia os dados do conjunto de dados INFILE e o layout de registro do 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
    

    Substitua:

    • INFILE: o nome do arquivo de entrada.
    • INFILE_DSN: o nome do arquivo de entrada do nome da fonte de dados (DSN, na sigla em inglês).
    • INFILE_DSN_FILEPATH: o caminho para o arquivo DSN de entrada.
    • COPYBOOK_FILEPATH: o caminho para o copybook DD.
    • LOG_PROJECT: o nome do projeto de registro.

    Confira a seguir um exemplo de arquivo 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
    

    Para conferir a lista completa de variáveis de ambiente compatíveis com o Mainframe Connector, consulte Variáveis de ambiente.

    Se você quiser registrar os comandos executados durante esse processo, ative as estatísticas de carga.

  2. Crie um arquivo job.yaml com o comando a seguir.

    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
    

    Substitua:

    • JOB pelo nome do job do Cloud Run. Os nomes dos jobs precisam ter 49 caracteres ou menos e ser exclusivos por região e projeto.
    • IMAGE pelo URL da imagem do contêiner do job. Por exemplo, us-docker.pkg.dev/cloudrun/container/job:latest.
    • LOCATION_OF_THE_COMMAND_YAML_FILE pelo local do arquivo YAML criado na etapa anterior.
  3. Implante o novo job usando este comando:

    gcloud run jobs replace job.yaml
    
  4. Execute o job usando o seguinte comando:

    gcloud run jobs execute JOB_NAME

    Substitua JOB_NAME pelo nome do job.

Para mais informações sobre como criar e executar um job do Cloud Run, consulte Criar um novo job e Executar um job.

Exportar a tabela do BigQuery para o conjunto de dados do Mainframe

É possível exportar a tabela do BigQuery para o conjunto de dados do Mainframe criando um arquivo YAML que executa uma leitura SQL do arquivo QUERY DD e exporta o conjunto de dados resultante para o Cloud Storage como um arquivo binário, conforme descrito a seguir.

As etapas para criar e executar o job do Cloud Run são as mesmas mencionadas na seção Transcodificar dados usando o Mainframe Connector no modo autônomo no Cloud Run. A única diferença são as instruções mencionadas no arquivo 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>"

Substitua:

  • COPYBOOK_FILEPATH: o caminho para o copybook DD.
  • LOG_PROJECT: o nome do projeto de registro.
  • PROJECT_NAME: o nome do projeto em que você quer executar a consulta.
  • LOCATION: o local em que a consulta será executada. Recomendamos que você execute a consulta em um local próximo aos dados.
  • BUCKET: o bucket do Cloud Storage que vai conter o arquivo binário de saída.

Confira a seguir um exemplo de arquivo 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>"