Ejecuta Mainframe Connector en modo independiente

En esta página, se explica cómo puedes instalar Mainframe Connector en Cloud Run, transcodificar datos, guardarlos en BigQuery y exportarlos desde BigQuery.

Mainframe Connector versión 5.13.0 y versiones posteriores admiten la ejecución de Mainframe Connector como un trabajo independiente en Google Cloud. Esta función te permite ejecutar Mainframe Connector como un trabajo por lotes en contenedores, por ejemplo, como un trabajo de Cloud Run, de Google Kubernetes Engine o dentro de un contenedor de Docker. Esta opción te ayuda a evitar instalar el conector de Mainframe de forma local en tu sistema y te permite integrar el análisis de archivos del método de acceso secuencial en cola (QSAM) de tu sistema a los flujos de trabajo de extracción, transformación y carga (ETL) existentes.

Cuando usas la versión independiente del conector de unidades centrales, debes configurar el flujo de trabajo de ETL que carga el archivo QSAM en Google Cloud por tu cuenta.

Antes de comenzar

  • Implementa Mainframe Connector en Cloud Run.
  • Crea una cuenta de servicio o identifica una cuenta de servicio existente para usarla con Mainframe Connector. Esta cuenta de servicio debe tener permisos para acceder a los buckets de Cloud Storage, a los conjuntos de datos de BigQuery y a cualquier otro recurso de Google Cloud que desees usar.
  • Asegúrate de que la cuenta de servicio que creaste tenga asignado el rol de invocador de Cloud Run.
  • Asegúrate de que los datos de la unidad central ya estén disponibles en Google Cloud como un archivo QSAM.

Transcodifica datos con Mainframe Connector en modo independiente en Cloud Run

Para transcodificar tus datos con Mainframe Connector en modo independiente, sigue estos pasos:

  1. Crea un archivo YAML con comandos para leer tu conjunto de datos, transcodificarlo al formato ORC y subirlo a Cloud Storage. El conjunto de datos de entrada debe ser un archivo QSAM con longitud de registro fija o variable. Puedes usar el siguiente archivo YAML de muestra para leer tu conjunto de datos, transcodificarlo al formato ORC y subirlo a Cloud Storage.

    En el siguiente ejemplo, se leen los datos del conjunto de datos INFILE y el diseño de registro del DD COPYBOOK.

    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
    

    Reemplaza lo siguiente:

    • INFILE: Es el nombre del archivo de entrada.
    • INFILE_DSN: Es el nombre del archivo de nombre de fuente de datos (DSN) de entrada.
    • INFILE_DSN_FILEPATH: Es la ruta de acceso al archivo DSN de entrada.
    • COPYBOOK_FILEPATH: Es la ruta de acceso al DD del libro de copia.
    • LOG_PROJECT: Es el nombre del proyecto de registro.

    El siguiente es un ejemplo de archivo 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 obtener la lista completa de las variables de entorno compatibles con el conector de Mainframe, consulta Variables de entorno.

    Si deseas registrar los comandos ejecutados durante este proceso, puedes habilitar las estadísticas de carga.

  2. Crea un archivo job.yaml con el siguiente 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
    

    Reemplaza lo siguiente:

    • JOB por el nombre del trabajo de Cloud Run. Los nombres de trabajos deben tener 49 caracteres o menos, y deben ser únicos por región y proyecto.
    • IMAGE por la URL de la imagen de contenedor del trabajo, por ejemplo, us-docker.pkg.dev/cloudrun/container/job:latest.
    • LOCATION_OF_THE_COMMAND_YAML_FILE por la ubicación del archivo YAML que creaste en el paso anterior.
  3. Implementa el servicio nuevo mediante el siguiente comando:

    gcloud run jobs replace job.yaml
    
  4. Ejecuta el trabajo con el siguiente comando:

    gcloud run jobs execute JOB_NAME

    Reemplaza JOB_NAME por el nombre del trabajo.

Para obtener más información sobre cómo crear y ejecutar un trabajo de Cloud Run, consulta Crea un trabajo nuevo y Cómo ejecutar un trabajo.

Exporta una tabla de BigQuery a un conjunto de datos de Mainframe

Para exportar una tabla de BigQuery a un conjunto de datos de Mainframe, crea un archivo YAML que ejecute una lectura de SQL desde el archivo DD de QUERY y exporte el conjunto de datos resultante a Cloud Storage como un archivo binario, como se indica a continuación.

Los pasos para crear y ejecutar el trabajo de Cloud Run son los mismos que se mencionan en la sección Cómo transcodificar datos con el conector de Mainframe en modo independiente en Cloud Run. La única diferencia son las instrucciones que se mencionan en el archivo 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>"

Reemplaza lo siguiente:

  • COPYBOOK_FILEPATH: Es la ruta de acceso al DD del libro de copia.
  • LOG_PROJECT: Es el nombre del proyecto de registro.
  • PROJECT_NAME: Es el nombre del proyecto en el que deseas ejecutar la consulta.
  • LOCATION: Es la ubicación en la que se ejecutará la consulta. Te recomendamos que ejecutes la consulta en una ubicación cercana a los datos.
  • BUCKET: Es el bucket de Cloud Storage que contendrá el archivo binario de salida.

El siguiente es un ejemplo de archivo 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>"