Cómo mover datos de la unidad central transcodificados de forma local a Google Cloud

En esta página, se explica cómo transcodificar datos de mainframe de forma local en el mainframe a un formato compatible y, luego, mover el contenido a Google Cloud.

Antes de comenzar

Instala Mainframe Connector en cualquier conjunto de datos particionado de la computadora central que quieras usar como biblioteca de procedimientos (PROCLIB).

Los comandos qsam y vsam

La transcodificación es el proceso de convertir información de una forma de representación codificada a otra. Mainframe Connector proporciona los comandos qsam y vsam para transcodificar datos de forma local en la computadora central.

Los comandos qsam decode y vsam decode usan un copybook de COBOL para convertir los registros de un conjunto de datos de una computadora central en un formato de archivo, como ORC, CSV, JSONL o AVRO, y escribir el resultado de forma local o en un bucket de Cloud Storage. Por ejemplo, puedes convertir un conjunto de datos QSAM codificado en EBCDIC en archivos ORC UTF-8. Para conocer todos los formatos de salida compatibles, consulta TranscodeFormat.

El comando qsam encode hace lo contrario: convierte datos CSV, JSONL, ORC o AVRO, o los resultados de una consulta de BigQuery, en un conjunto de datos QSAM. Para conocer todos los formatos de entrada compatibles, consulta TranscodeInputFormat.

Estos comandos proporcionan las siguientes funciones:

  • Compatibilidad con tipos de datos compuestos, incluidas la cláusula OCCURS (listas), la cláusula REDEFINES y los registros anidados. Para obtener más información sobre estos tipos de datos, consulta Referencia de transcodificación de qsam y vsam.
  • Compatibilidad con la configuración del proceso de transcodificación a través de un archivo de configuración del transcodificador. Esta capacidad ofrece más flexibilidad cuando se decodifican datos en Google Cloud y se vuelven a codificar en la computadora central.
  • Compatibilidad con la creación de un conjunto de datos de desbordamiento, que es una tabla de errores de transcodificación que se puede usar para la inspección de errores.
  • Compatibilidad con múltiples formatos de entrada y salida. Esta función te permite cargar tus datos desde y hacia varios almacenes de datos.

Transcodifica los datos de la computadora central de forma local y muévelos a Google Cloud

Mainframe Connector te permite transcodificar datos de forma local en la computadora central y, luego, moverlos a Cloud Storage. Lleva a cabo los pasos siguientes:

  1. Crea un trabajo para leer el conjunto de datos en tu computadora central y transcodificarlo al formato ORC. Lee los datos del conjunto de datos INFILE y el diseño de registros del COPYBOOK DD.

    Puedes modificar el comportamiento predeterminado del proceso de transcodificación del Mainframe Connector proporcionando un archivo de configuración del transcodificador con el argumento --transcode-configuration.

    • Si tu conjunto de datos de entrada es un archivo de método de acceso secuencial en cola (QSAM) con una longitud de registro fija o variable, usa el siguiente comando:

      //STEP01 EXEC BQSH
      //INFILE DD DSN=<HLQ>.DATA.FILENAME,DISP=SHR
      //COPYBOOK DD DISP=SHR,DSN=<HLQ>.COPYBOOK.CPY
      //CONFIG DD DISP=SHR,DSN=<HLQ>.CONFIG.SETTINGS
      //STDIN DD *
      BUCKET=BUCKET_NAME
      qsam decode --copybook dd:COPYBOOK --transcode-configuration dd:CONFIG dd:INFILE gs://$BUCKET/tablename
      /*
      
    • Si tu conjunto de datos de entrada es un archivo de Virtual Storage Access Method (VSAM) con una longitud de registro fija o variable, usa el siguiente comando:

      //STEP01 EXEC BQSH
      //INFILE DD DSN=<HLQ>.DATA.FILENAME,DISP=SHR
      //COPYBOOK DD DISP=SHR,DSN=<HLQ>.COPYBOOK.CPY
      //CONFIG DD DISP=SHR,DSN=<HLQ>.CONFIG.SETTINGS
      //STDIN DD *
      BUCKET=BUCKET_NAME
      vsam decode --copybook dd:COPYBOOK --transcode-configuration dd:CONFIG dd:INFILE gs://$BUCKET/tablename
      /*
      

      Reemplaza BUCKET_NAME por el nombre del bucket de Cloud Storage en el que deseas copiar los datos de la computadora central.

    En este ejemplo, se usa DD DataPath para especificar la ruta de acceso de la configuración de copybook, entrada y transcodificación. Consulta DataPath para conocer otras opciones.

    Para evitar especificar variables como IDs de proyectos y nombres de bucket en cada procedimiento de lenguaje de control de trabajos (JCL), puedes agregarlas en la PROCLIB de BQSH y hacer referencia a ellas en varios procedimientos de JCL como variables de entorno. Este enfoque también simplifica la transición entre los entornos de producción y no producción, ya que las variables específicas del entorno se establecen en la PROCLIB de BQSH del entorno.

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

  2. Crea y envía un trabajo de carga de BigQuery que cargue el archivo transcodificado en BigQuery. Por ejemplo, si transcodificaste los datos al formato ORC, puedes cargar las particiones de archivos ORC de tablename.orc en MY_DATASET.MY_TABLE, de la siguiente manera:

    Example JCL
    //STEP02 EXEC BQSH
    //STDIN DD *
    BUCKET=BUCKET_NAME
    PROJECT=PROJECT_NAME
    bq load --project_id=$PROJECT \
      myproject:MY_DATASET.MY_TABLE \
      gs://$BUCKET/tablename.orc/*
    /*
    

    Reemplaza lo siguiente:

    • BUCKET_NAME: Es el nombre del bucket de Cloud Storage que contiene los archivos ORC que deseas cargar en BigQuery.
    • PROJECT_NAME: Es el nombre del proyecto en el que deseas ejecutar la consulta.
  3. Opcional: Crea y envía un trabajo de consulta de BigQuery que ejecute una lectura de SQL desde el archivo DD de QUERY. Por lo general, la consulta será una declaración MERGE o SELECT INTO DML que dará como resultado la transformación de una tabla de BigQuery. Ten en cuenta que Mainframe Connector registra las métricas de los trabajos, pero no escribe los resultados de las consultas en un archivo.

    Puedes consultar BigQuery de varias maneras: de forma intercalada, con un conjunto de datos independiente con DD o con un conjunto de datos independiente con DSN.

    Example JCL
    //STEP03 EXEC BQSH
    //QUERY DD DSN=<HLQ>.QUERY.FILENAME,DISP=SHR
    //STDIN DD *
    PROJECT=PROJECT_NAME
    LOCATION=LOCATION
    bq query --project_id=$PROJECT \
    --location=$LOCATION/*
    /*
    

    Reemplaza lo siguiente:

    • 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.
  4. Opcional: Crea y envía un trabajo de exportación que ejecute una lectura de SQL desde el archivo QUERY DD y exporte el conjunto de datos resultante a una computadora central como un archivo binario.

    //STEP04 EXEC BQSH
    //OUTFILE DD DSN=<HLQ>.DATA.FILENAME,DISP=SHR
    //COPYBOOK DD DISP=SHR,DSN=<HLQ>.COPYBOOK.CPY
    //CONFIG DD DISP=SHR,DSN=<HLQ>.CONFIG.SETTINGS
    //QUERY DD DSN=<HLQ>.QUERY.FILENAME,DISP=SHR
    //STDIN DD *
    
    PROJECT=PROJECT_NAME
    qsam encode \
      dd:QUERY
      dd:OUTFILE
      --copybook dd:COPYBOOK
      --transcode-configuration dd:CONFIG
      --input-format=BIGQUERY \
      --input-parameter project_id=PROJECT_NAME \
      --input-parameter location=LOCATION/*
    /*
    

    Reemplaza lo siguiente:

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

    Puedes modificar el comportamiento predeterminado del proceso de transcodificación de Mainframe Connector proporcionando un archivo de configuración del transcodificador con el argumento --transcode-configuration.

    Los datos se exportan al conjunto de datos OUTFILE DD. El diseño del registro se describe en el COPYBOOK DD. Para conocer otras opciones de rutas de configuración de copybook, outfile y transcodificación, consulta DataPath.