Trasladar los datos transcodificados de forma local en la unidad central a Google Cloud

En esta página, se explica cómo puedes transcodificar datos de mainframe de forma local en el mainframe al formato Optimized Row Columnar (ORC) y, luego, mover el contenido a BigQuery.

La transcodificación es el proceso de convertir información a partir de una forma de código a otra, en este caso, a ORC. ORC es un formato de datos orientado a columnas de código abierto que se usa ampliamente en el ecosistema de Apache Hadoop y que es compatible con BigQuery.

Antes de comenzar

Cómo instalar el conector de unidad central a cualquier conjunto de datos particionado de unidades centrales que desees usar como biblioteca de procedimientos (PROCLIB).

Trasladar los datos transcodificados de forma local en la unidad central a Google Cloud

Para transcodificar datos de forma local en un mainframe y, luego, moverlos a BigQuery, debes realizar las siguientes tareas:

  1. Lee y transcodifica un conjunto de datos en un mainframe, y súbelo a Cloud Storage en formato ORC. La transcodificación se realiza durante la operación cp, en la que un conjunto de datos de código de intercambio decimal codificado binario extendido (EBCDIC) de mainframe se convierte al formato ORC en UTF-8 durante la copia en un bucket de Cloud Storage.
  2. Carga el conjunto de datos en una tabla de BigQuery.
  3. Ejecuta una consulta en SQL en la tabla de BigQuery (opcional).
  4. (Opcional) Exporta datos de BigQuery al mainframe.

Para realizar estas tareas, sigue estos pasos:

  1. Crea un trabajo para leer el conjunto de datos en tu unidad central y transcodificarlo en ORC de la siguiente manera. Lee los datos del conjunto de datos INFILE y el diseño del registro del COPYBOOK DD. El conjunto de datos de entrada debe ser un archivo de método de acceso secuencial en cola (QSAM) con longitud de registro fija o variable.

    //STEP01 EXEC BQSH
    //INFILE DD DSN=<HLQ>.DATA.FILENAME,DISP=SHR
    //COPYBOOK DD DISP=SHR,DSN=<HLQ>.COPYBOOK.FILENAME
    //STDIN DD *
    BUCKET=BUCKET_NAME
    gsutil cp --replace gs://$BUCKET/tablename.orc
    /*
    

    Reemplaza lo siguiente:

    • BUCKET_NAME: Es el nombre del bucket de Cloud Storage al que deseas copiar los datos del mainframe.

    Para evitar especificar variables como los IDs del proyecto y los nombres de bucket en cada trabajo control de lenguaje de control (JCL), puedes agregarlos en BQSH PROCLIB y hacer referencia a ellos en varios procedimientos de JCL como variables de entorno. Esta también brinda una transición sin inconvenientes entre la producción entornos que no son de producción, ya que las variables específicas del entorno se configuran en el BQSH PROCLIB del entorno. Para obtener la lista completa de las variables de entorno que admite el conector de Mainframe, consulta Variables de entorno.

    En este ejemplo, la entrada estándar (STDIN) se proporciona como datos en el flujo al DD STDIN. Como alternativa, puedes proporcionar esta entrada con un nombre de fuente de datos (DSN), lo que facilita la administración de la sustitución de símbolos.

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

  2. Crear y enviar un trabajo de carga de BigQuery que cargue particiones de archivos ORC de my_table.orc a MY_DATASET.MY_TABLE, como sigue.

    Example JCL
    //STEP02 EXEC BQSH
    //STDIN DD *
    PROJECT=PROJECT_NAME
    bq load --project_id=$PROJECT \
      myproject:DATASET.TABLE \
      gs://bucket/tablename.orc/*
    /*
    

    Reemplaza lo siguiente:

    • 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 operación de lectura de SQL desde el archivo DD de QUERY. Por lo general, la consulta será una MERGE o SELECT INTO DML que da como resultado la transformación de una tabla de BigQuery. Nota que el conector de unidades centrales registre en las métricas del trabajo, pero no escriba consultas los resultados a un archivo.

    Puedes consultar BigQuery de varias maneras, intercaladas, con un conjunto de datos con DD, o con un conjunto de datos separado que usa 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 realizar la acción. cuando quieres ejecutar la consulta.
    • LOCATION: Es la ubicación en la que se realizará la consulta. ejecutado. Te recomendamos que ejecutes la consulta en una ubicación cercana a la de datos no estructurados.
  4. (Opcional) Crea y envía un trabajo de exportación que ejecute una operación de lectura de SQL desde el archivo DD QUERY y exporte el conjunto de datos resultante a un mainframe como un archivo binario.

    Example JCL
    //STEP04 EXEC BQSH
    //OUTFILE DD DSN=<HLQ>.DATA.FILENAME,DISP=SHR
    //COPYBOOK DD DISP=SHR,DSN=<HLQ>.COPYBOOK.FILENAME
    //QUERY DD DSN=<HLQ>.QUERY.FILENAME,DISP=SHR
    //STDIN DD *
    PROJECT=PROJECT_NAME
    DATASET_ID=DATASET_ID
    DESTINATION_TABLE=DESTINATION_TABLE
    bq export --project_id=$PROJECT \
      --dataset_id=$DATASET_ID \
      --destination_table=$DESTINATION_TABLE \
      --location="US" \
      --remoteHost <mainframe-connector-url>.a.run.app \
      --remotePort 443
    /*
    

    Reemplaza lo siguiente:

    • PROJECT_NAME: Es el nombre del proyecto en el que deseas realizar la acción. cuando quieres ejecutar la consulta.
    • DATASET_ID: El ID del conjunto de datos de BigQuery que contiene la tabla que deseas exportar.
    • DESTINATION_TABLE: La tabla de BigQuery que quieres exportar.

    Los datos se exportan al conjunto de datos OUTFILE DD. El diseño del registro se describe en el DD de COPYBOOK.