Nesta página, explicamos como instalar o conector de mainframe no Cloud Run, transcodificar dados, salvá-los no BigQuery e exportá-los do BigQuery.
O Mainframe Connector versão 5.13.0 e mais recentes oferecem suporte à execução do Mainframe Connector como um job independente no Google Cloud. Com esse recurso, é possível executar o Mainframe Connector como um job em lote conteinerizado, 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 do Mainframe Connector localmente no mainframe e facilita a integração da análise de arquivos do método de acesso sequencial enfileirado (QSAM) do mainframe aos fluxos de trabalho de extração, transformação e carregamento (ETL) atuais.
Ao usar a versão independente do Mainframe Connector, você precisa configurar o fluxo de trabalho de ETL que carrega o arquivo QSAM para Google Cloud por conta própria.
Antes de começar
- Implante o Conector de mainframe 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 tem o papel de invocador do Cloud Run atribuído.
- Verifique se os dados do mainframe já estão disponíveis em Google Cloud como um arquivo QSAM.
Transcodificar dados usando o conector de mainframe no modo independente no Cloud Run
O Mainframe Connector oferece duas maneiras de executar o Mainframe Connector como um job independente no Google Cloud:
- Usar comandos
qsam
(versão 5.16.0 e mais recentes) - Usar o comando
gsutil cp
Vantagens dos comandos qsam
Os comandos qsam
oferecem as seguintes vantagens:
- Compatível com tipos de dados compostos, incluindo a cláusula OCCURS (listas), a cláusula REDEFINES e registros aninhados. Para mais informações sobre esses tipos de dados, consulte a
referência de transcodificação
qsam
. - Oferece suporte à configuração do processo de transcodificação por um arquivo de configuração do transcoder. Esse recurso oferece mais flexibilidade ao decodificar dados para Google Cloud e codificar os dados de volta para o mainframe.
- Permite a criação de um conjunto de dados de transbordamento, que é uma tabela de erros de transcodificação que pode ser usada para inspeção de erros.
- Compatível com vários formatos de entrada e saída. Com esse recurso, é possível carregar dados de e para vários data warehouses.
Executar o Conector de mainframe no modo independente usando comandos qsam
Para transcodificar seus dados usando o Mainframe Connector no modo independente
com comandos qsam
, siga estas etapas:
Crie um arquivo YAML com comandos para fazer o seguinte:
- Ler o conjunto de dados
- Transcodifique para um formato compatível
- Faça 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 exemplo de arquivo YAML a seguir para ler seu conjunto de dados, transcodificá-lo para o formato ORC e fazer upload dele para o Cloud Storage.
No exemplo a seguir, usamos o
DataPath
do Cloud Storage paraINFILE
,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"
Substitua:
INFILE
: o nome do arquivo de entrada.OUTFILE
: o nome do arquivo de saída.COPYBOOK_PATH
: o caminho para o DD de copybook.TRANSCODE_CONFIGURATION_PATH
: o caminho para o arquivo de configuração de transcodificação.LOG_PROJECT
: o nome do projeto de registro.
Confira um exemplo de arquivo 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"
Crie um arquivo
job.yaml
com o seguinte 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
Substitua:
- JOB: o nome do seu job do Cloud Run; Os nomes dos jobs precisam ter 49 caracteres ou menos e ser exclusivos por região e projeto.
- IMAGE: o URL da imagem do contêiner do job. Por exemplo,
us-docker.pkg.dev/cloudrun/container/job:latest
. - LOCATION_OF_THE_COMMAND_YAML_FILE: o local do arquivo YAML que você criou na etapa anterior.
Implante o novo job usando este comando:
gcloud run jobs replace job.yaml
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 job e Executar um job.
Execute o Mainframe Connector no modo independente usando o comando gsutil cp
Para transcodificar seus dados usando o Mainframe Connector no modo independente
com o comando gsutil cp
, siga estas etapas:
Crie um arquivo YAML com comandos para fazer o seguinte:
- Ler o conjunto de dados
- Transcodificar para ORC
- Faça 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 exemplo de arquivo YAML a seguir para ler seu conjunto de dados, transcodificá-lo para o formato ORC e fazer upload dele para o Cloud Storage.
No exemplo a seguir, leia os dados do conjunto de dados INFILE e o layout do registro do 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
Substitua:
INFILE
: o nome do arquivo de entrada.INFILE_DSN
: o nome do arquivo de nome da fonte de dados (DSN) de entrada.INFILE_DSN_FILEPATH
: o caminho para o arquivo DSN de entrada.COPYBOOK_FILEPATH
: o caminho para o DD de copybook.LOG_PROJECT
: o nome do projeto de registro.
Confira 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 quiser registrar os comandos executados durante esse processo, ative as estatísticas de carga.
Crie um arquivo
job.yaml
com o seguinte 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
Substitua:
- JOB: o nome do seu job do Cloud Run; Os nomes dos jobs precisam ter 49 caracteres ou menos e ser exclusivos por região e projeto.
- IMAGE: o URL da imagem do contêiner do job. Por exemplo,
us-docker.pkg.dev/cloudrun/container/job:latest
. - LOCATION_OF_THE_COMMAND_YAML_FILE: o local do arquivo YAML que você criou na etapa anterior.
Implante o novo job usando este comando:
gcloud run jobs replace job.yaml
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 job e Executar um job.
Exportar tabela do BigQuery para um conjunto de dados do mainframe
É possível exportar uma tabela do BigQuery para um conjunto de dados de 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, da seguinte maneira.
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 independente no Cloud Run. A única diferença são as instruções mencionadas no arquivo YAML. O Mainframe Connector oferece duas maneiras de exportar tabela do BigQuery:
- Usando comandos
qsam
(versão 5.16.0 e mais recentes) Como usar o comando
bq export
Usar comandos 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}
Substitua:
QUERY_PATH
: a consulta SQL a ser executada. O resultado da consulta será codificado em um arquivo binário.OUTFILE
: o bucket do Cloud Storage que vai conter o arquivo binário de saída.COPYBOOK_PATH
: o caminho para o DD de copybook.TRANSCODE_CONFIGURATION_PATH
: o caminho para o arquivo de configuração do transcoder.LOG_PROJECT
: o nome do projeto de registro.PROJECT_ID
: o ID do projeto em que você quer executar a consulta.LOCATION
: a região ou multirregião em que a consulta será executada. Recomendamos que você execute a consulta em um local próximo aos dados. O valor padrão é "US".
Confira um exemplo de arquivo 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}
Usar o 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"
Substitua:
COPYBOOK_FILEPATH
: o caminho para o DD de copybook.LOG_PROJECT
: o nome do projeto de registro.PROJECT_NAME
: o nome do projeto em que você quer executar a consulta.LOCATION
: o local onde a consulta será executada. Recomendamos que você execute a consulta em um local próximo aos dados.BUCKET
: o URI do Cloud Storage que vai conter o arquivo binário de saída.
Confira um exemplo de arquivo 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="gs://outputbucket/data.dat"