En la siguiente tabla se enumeran los comandos de BigQuery, Cloud Storage y otros comandos deGoogle Cloud que puede usar con Mainframe Connector.
Producto | Comando | Descripción | Admite la transcodificación remota |
---|---|---|---|
Comandos de BigQuery |
|
Usa este comando para crear un archivo binario. El comando acepta un
COPYBOOK DD
como entrada.
Nota: Te recomendamos que uses los comandos qsam decode y qsam encode para
llevar a cabo esta tarea. Para obtener información sobre las ventajas de usar los comandos qsam , consulta Ventajas de los comandos qsam .
El comando bq export admite algunas funciones de ajuste del rendimiento. Para obtener más información, consulta Mejoras de rendimiento del comando bq export . Puedes usar conjuntos de caracteres personalizados con el comando bq export . Para obtener más información, consulta Usar conjuntos de caracteres personalizados.
Nota: El comando bq export no puede exportar tablas de Bigtable de gran tamaño. Para evitar errores, añade la marca -allowLargeResults al comando bq export
cuando quieras exportar tablas grandes. |
Sí |
|
Usa este comando para cargar datos en una tabla. | No | |
|
Usa este comando para crear recursos de BigQuery, como tablas integradas o tablas externas, que necesiten particiones y clústeres.
También puedes usar el comando bq mk para generar una tabla de BigQuery directamente a partir del análisis de libros de copias de COBOL. Para obtener más información, consulta el artículo sobre cómo crear una tabla de BigQuery a partir de un copybook.
|
No | |
|
Usa este comando para crear un trabajo de consulta que ejecute la consulta SQL especificada. El comando lee la consulta de SQL de la marca --sql
o de QUERY DD.
Si se proporcionan ambos, la consulta de la marca --sql tiene prioridad.
Usa la marca --follow=true para generar un informe que muestre
los resultados de una consulta seleccionada. Para escribir este informe en un archivo del mainframe, define una instrucción DD AUDITL que apunte al archivo que debe contener el informe de registros de auditoría. No uses la marca
--follow si quieres que el registro se comporte con normalidad.
Algunos resultados de consultas pueden devolver un gran número de filas, a veces millones. Para que el resultado siga siendo legible, se limita el número de líneas que se muestran. Para controlar el número de filas que se muestran, usa la marca --report_row_limit . Por ejemplo, usa --report_row_limit 10 para limitar los resultados a 10 líneas. De forma predeterminada, el número de líneas que se muestra está limitado a 30.
Para usar la parametrización de bq query , consulta Parametrización de consultas de bq.
|
Sí | |
|
Usa este comando para eliminar permanentemente un recurso de BigQuery. Como este comando elimina un recurso de forma permanente, te recomendamos que lo uses con precaución. | No | |
Comandos de Cloud Run |
|
Usa este comando para activar un trabajo de Cloud Run desde tu mainframe. | No |
|
Usa este comando para ver los registros de una ejecución de un trabajo de Cloud Run específico. | No | |
|
Usa este comando para cancelar una tarea de Cloud Run. | No | |
Comandos de Cloud Storage |
|
Usa este comando para copiar texto o datos binarios en Cloud Storage.
Puedes usar el modo de copia binaria simple para copiar un conjunto de datos de IBM z/OS a Cloud Storage sin modificarlo como parte de una canalización de datos. Opcionalmente, puedes convertir la codificación de caracteres de código de intercambio decimal codificado en binario extendido (EBCDIC) a ASCII UTF-8 y añadir saltos de línea.
Nota: Te recomendamos que uses los comandos copy text para realizar esta tarea, ya que ofrecen mejores funciones.
También puedes usar este comando para copiar el código fuente de la aplicación definido en lenguaje de control de trabajos (JCL). |
No |
Utilidad gsutil |
|
Usa este comando para transcodificar un conjunto de datos y escribirlo en Cloud Storage con el formato de archivo Optimized Row Columnar (ORC). El comando lee los datos de INFILE DD y el diseño del registro del archivo COPYBOOK.
Nota: Te recomendamos que uses los comandos qsam decode y qsam encode para
llevar a cabo esta tarea. Para obtener información sobre las ventajas de usar los comandos qsam , consulta Ventajas de los comandos qsam .
Si quiere que el comando lea los datos de un archivo de nombre de fuente de datos (DSN), use las siguientes marcas:
También puedes usar este comando para interactuar con el servicio gRPC de Mainframe Connector que se ejecuta en una VM del mainframe. Para ello, define las variables de entorno SRVHOST y SRVPORT , o bien proporciona el nombre de host y el número de puerto mediante opciones de línea de comandos. Cuando se usa el servicio gRPC, Mainframe Connector copia primero el conjunto de datos de entrada en Cloud Storage y, a continuación, se hace una llamada a un procedimiento remoto (RPC) para indicar al servicio gRPC que transcodifique el archivo.
También puedes realizar las siguientes tareas con el comando gsutil cp
:
|
Sí |
|
Usa este comando para eliminar segmentos u objetos de un segmento. | No | |
Utilidad gszutil |
|
La utilidad gszutil se ejecuta con el SDK de Java JZOS de IBM y
proporciona un emulador de shell que acepta gsutil y
invocaciones de línea de comandos de BigQuery mediante JCL.
Nota: Te recomendamos que uses los comandos qsam decode y qsam encode para
llevar a cabo esta tarea. Para obtener información sobre las ventajas de usar los comandos qsam , consulta Ventajas de los comandos qsam .
La utilidad gszutil amplía la funcionalidad de la utilidad gsutil al aceptar un esquema en forma de COPYBOOK DD, usarlo para transcodificar conjuntos de datos de COBOL directamente a ORC antes de subirlos a Cloud Storage. La utilidad gszutil también te permite ejecutar query y load de BigQuery mediante JCL.
La utilidad gszutil funciona con el servidor gRPC, que te ayuda a reducir el consumo de millones de instrucciones por segundo (MIPS). Te recomendamos que utilices la utilidad gszutil en tu entorno de producción para convertir archivos binarios de Cloud Storage al formato ORC.
|
No |
Comandos de qsam |
|
Usa este comando para transcodificar registros de archivos QSAM al formato que quieras
con el argumento --output-format . El archivo QSAM original se
divide en fragmentos según el valor que especifiques con el
argumento --max-chunk-size . El resultado transcodificado se guarda en la ruta de destino como archivos ordenados lexicográficamente.
|
No |
|
Usa este comando para convertir datos de una fuente externa en un archivo QSAM.
La entrada se define mediante el valor que especifiques con el argumento --input-format .
|
No | |
Comandos de Pub/Sub |
|
Usa este comando para publicar un mensaje en un tema de Pub/Sub. | No |
Otros comandos |
|
Usa este comando para copiar un archivo en la ubicación de almacenamiento que elijas, como Cloud Storage, y viceversa. | No |
|
Usa este comando para enviar una solicitud HTTP a un servicio web o a APIs REST. | No | |
|
Usa este comando para activar la ejecución de una plantilla flexible de Dataflow. El comando ejecuta una tarea desde la ruta de la plantilla flexible especificada. Para obtener más información, consulta gcloud dataflow flex-template run. | No | |
|
Usa este comando para imprimir los datos del sistema necesarios en la salida estándar (stdout). De esta forma, el equipo de asistencia de Mainframe Connector puede recopilar la información necesaria para diagnosticar un problema sin necesidad de que el cliente interactúe mucho.
En función de la marca que uses, el comando systemreport imprimirá los
siguientes datos del sistema:
|
No |
Usar conjuntos de caracteres personalizados
Mainframe Connector admite diferentes conjuntos de caracteres que decodifican bytes en cadenas de BigQuery y viceversa. Mainframe Connector te permite configurar tu propio conjunto de caracteres personalizado. Puedes configurar un conjunto de caracteres personalizado creando un archivo de asignación de caracteres Unicode (UCM). Mainframe Connector admite el siguiente subconjunto del formato UCM:
<code_set_name> "<name>"
<uconv_class> "SBCS"
<subchar> \x1A #Example
CHARMAP
#_______ _________
<U0000> \x00 |0 #For the third column, only 0 is supported.
<U0001> \x01 |0
#etc
END CHARMAP
Si quieres usar un conjunto de caracteres personalizado, define un archivo de configuración en formato UCM. Puedes usar este conjunto de caracteres personalizado con los comandos gsutil cp
o bq export
configurando la marca --encoding=charset
.
Cuando crees un conjunto de caracteres personalizado, comprueba lo siguiente:
- Al definir un archivo UCM, ten en cuenta lo siguiente:
- Mainframe Connector solo admite conjuntos de caracteres personalizados con un conjunto de caracteres de un solo byte (SBCS).
- Mainframe Connector solo admite el indicador de precisión UCM
|0
. - Verifica que los archivos UCM se encuentren en los servicios del sistema Unix de z/OS (USS) y no en un conjunto de datos particionado de almacenamiento virtual múltiple (MVS PDS).
- Verifique que los archivos UCM se hayan guardado en formato ASCII (American Standard Code for Information Interchange) y no en formato EBCDIC (Extended Binary Coded Decimal Interchange Code).
- Proporciona una asignación explícita para cada valor de un solo byte posible a un carácter Unicode. Si no sabes con certeza a qué carácter Unicode quieres asignar un byte, te recomendamos que lo asignes a
U+FFFD
. Puedes asignar diferentes secuencias de bytes al mismo carácter Unicode. Sin embargo, en estos casos, la asignación no es bidireccional. Es decir, cuando carga datos en BigQuery y, posteriormente, los vuelve a exportar a un archivo binario, el resultado puede ser diferente de la entrada original. - Verifica que las secuencias de bytes de la segunda columna sean únicas. Si varias secuencias de bytes se asignan al mismo carácter Unicode, este carácter Unicode se decodifica en una secuencia de bytes de la última asignación definida en el archivo UCM.
- Verifica que Mainframe Connector pueda encontrar el archivo UCM configurando la variable de entorno
BQSH_FEATURE_CUSTOM_CHARSET
en la ruta del archivo UCM. Si quieres usar varios conjuntos de caracteres, puedes proporcionar las rutas a varios conjuntos de caracteres separados por el delimitador de punto y coma. Por ejemplo,BQSH_FEATURE_CUSTOM_CHARSET=path1;path2
. path puede apuntar a un archivo local o a un archivo almacenado en Cloud Storage. Si ejecutas los comandosgsutil cp
obq export
con la marca--remote
para realizar una transcodificación remota, Mainframe Connector usará el valor local definido para la variable de entornoBQSH_FEATURE_CUSTOM_CHARSET
. Lo mismo ocurre cuando ejecutas Mainframe Connector en modo independiente. Si la marca--encoding
hace referencia a un conjunto de caracteres personalizado que no corresponde al valor que ha definido paraBQSH_FEATURE_CUSTOM_CHARSET
(o si no ha definidoBQSH_FEATURE_CUSTOM_CHARSET
), el comando se cierra con un mensaje de error.
Configuración del ajuste de rendimiento del comando bq export
Mainframe Connector admite la siguiente configuración de ajuste del rendimiento para el comando bq export
:
exporter_thread_count
: (Opcional) Define el número de subprocesos de trabajador. El valor predeterminado es 4.max_read_streams
: (Opcional) Define el número máximo de flujos de lectura. El valor predeterminado es el mismo que el valor definido enexporter_thread_count
.order_response
: (Opcional) Si asignas el valor "true" a esta marca, el exportador conservará el orden de los resultados de la consulta. Esta marca afecta al rendimiento de la exportación. El valor predeterminado es false.max_read_queue
: (opcional) Define el número máximo de colas de registros de lectura. El valor predeterminado es el doble del número de subprocesos.transcoding_buffer
: (Opcional) Define el tamaño del búfer de transcodificación por subproceso en MB. El valor predeterminado es 20 MB.
Ten en cuenta que también puedes probar a aumentar el tamaño de la ventana de transporte configurando la variable de entorno OVERRIDE_GRPC_WINDOW_MB
para mejorar el rendimiento. El tamaño predeterminado de la ventana es de 4 MB.
Crear una tabla de BigQuery a partir de un copybook
Puedes usar el comando bq mk
para generar una tabla de BigQuery directamente a partir del análisis de los copybooks de COBOL. El analizador nativo de copybooks extrae los valores predeterminados de la cláusula VALUE
de un copybook y los asigna a las columnas correspondientes de una tabla de BigQuery recién creada.
Para ayudarte a probar esta función, el comando bq mk
también ofrece un modo de prueba. Este modo te permite previsualizar el comando CREATE TABLE SQL
generado sin crear la tabla en BigQuery.
El comando bq mk
proporciona las siguientes opciones de configuración para admitir esta función:
--schema_from_copybook
: especifica el copybook que se va a usar para crear la tabla.--dry_run
: (Opcional) Si está habilitado, el comando solo imprime el comandoCREATE TABLE SQL
generado sin ejecutarlo. Esta marca tiene el valor "false" de forma predeterminada.--tablespec "[PROJECT_ID]:[DATASET].[TABLE]"
: especifica el ID del proyecto de BigQuery, el conjunto de datos y el nombre de la tabla de destino.--encoding
: especifica la codificación utilizada para leer el archivo de libro de copias. El valor predeterminado esCP037
.
Se admiten las siguientes cláusulas VALUE
:
VAR1 PIC 9(5) VALUE 55.
*-- Set VAR1 to 55
VAR1 PIC X(5) VALUE aaaa. Set VAR1 to aaaa
VAR1 PIC 9(3) COMP VALUE 3. Set VAR1 to 3 (binary)
VAR1 PIC [9(5), X(5)] VALUE <literal>. Set VAR1 to <literal>
VAR1 PIC [9(5), X(5)] VALUE ZERO. Set VAR1 to 0 or "0"
VAR1 PIC [9(5), X(5)] VALUE ZEROS. Set VAR1 to 0 or "00000"
VAR1 PIC [9(5), X(5)] VALUE ZEROES. Set VAR1 to 0 or "00000"
VAR1 PIC X(5) VALUE SPACE. Set VAR1 to " "
VAR1 PIC X(5) VALUE SPACES. Set VAR1 to " "
Las cláusulas HIGH-VALUE
y LOW-VALUE
solo se admiten en variables alfanuméricas.
VAR1 PIC X(5) VALUE HIGH-VALUE. Set VAR1 to `X"FF "
VAR1 PIC X(5) VALUE HIGH-VALUES. Set VAR1 to 0 or `X"FFFFFFFFFF"
VAR1 PIC X(5) VALUE LOW-VALUE. Set VAR1 to `X"00" (NULL)
VAR1 PIC X(5) VALUE LOW-VALUES. Set VAR1 to `X"0000000000" (NULL)
VAR1 PIC X(5) VALUE QUOTE. Set VAR1 to `"`
VAR1 PIC X(5) VALUE `QUOTES`. Set VAR1 to 0 or `""""`
VAR1 PIC [9(5), X(5)] VALUE NULL. Not defined and won't be supported
VAR1 PIC [9(5), X(5)] VALUE ALL <literal>. Set all fields with the value ALL to <literal>
Parametrización de bq query
Mainframe Connector te permite usar consultas con parámetros con bq query
.
A continuación, se muestra un ejemplo de cómo puedes usar una consulta bq query
parametrizada:
Archivo de consulta
SELECT * FROM `bigquery-public-data.samples.wikipedia` WHERE title = @xtitle
A continuación, se muestra un ejemplo con varios parámetros.
Archivo de consulta
SELECT * FROM bigquery-public-data.samples.wikipedia WHERE title = @mytitle AND num_characters > @min_chars;
Ejemplo de ejecución
bq query \
--project_id=mainframe-connector-dev \
--location="US" \
--parameters=mytitle::Hippocrates,min_chars:INT64:42600
Realizar una prueba de funcionamiento del comando gsutil cp
El comando gsutil cp
decodifica un archivo QSAM mediante un libro de copias de COBOL y genera un archivo ORC en Cloud Storage. Puedes hacer una prueba de funcionamiento del comando gsutil cp
con la marca dry_run
y probar los siguientes pasos:
- Analiza un copybook o un archivo de datos de COBOL y comprueba si es compatible con Mainframe Connector.
- Decodifica un archivo QSAM sin escribirlo en Cloud Storage.
Usa el siguiente comando para hacer una prueba de funcionamiento:
gsutil cp \
--dry_run \
gs://result-dir
Si todos los pasos se ejecutan correctamente, el comando se cierra con el código de retorno 0. Si se produce algún problema, se mostrará un mensaje de error.
Cuando usas la marca dry_run
, se registran todas las estadísticas, como el total de bytes leídos, el número de registros escritos y el total de errores.
Si usa la marca dry_run
y la fuente de datos no existe, el comando no devuelve un error. En su lugar, solo comprueba el analizador de copybook y, a continuación, completa la ejecución.
Copiar un archivo de Cloud Storage a tu mainframe
Puedes usar el comando gsutil cp
para copiar un archivo de Cloud Storage en un conjunto de datos de Mainframe. Ten en cuenta que no puedes copiar conjuntos de datos particionados (PDS).
Para copiar un archivo de Cloud Storage en un conjunto de datos de mainframe, especifica el DSN y los requisitos de espacio del archivo que quieras descargar en el mainframe en JCL, como se muestra en el siguiente ejemplo:
//OUTFILE DD DSN=MAINFRAME.DSN.FILE,DISP=(,CATLG),
// RECFM=FB,DSORG=PS,
// SPACE=(10,(2,1),RLSE),
// AVGREC=M,
// UNIT=SYSDA
//SYSPRINT DD SYSOUT=*
//SYSDUMP DD SYSOUT=*
//STDIN DD *
Especifica el comando gsutil cp
con el siguiente formato. Si el archivo ya existe en tu mainframe, comprueba que añades la marca --replace al comando.
gsutil cp GCS_URI DSN --recfm=RECFM --lrecl=LRECL --blksize=BLKSIZE --noseek
Haz los cambios siguientes:
- GCS_URI: el identificador uniforme de recurso (URI) de Cloud Storage del archivo de Cloud Storage. Por ejemplo,
gs://bucket/sample.mainframe.dsn
. - DSN: la ubicación de destino del DSN en el mainframe.
- RECFM: formato de registro (RECFM) del archivo de mainframe. Los valores válidos son F, FB y U. Ten en cuenta que estos valores no distinguen entre mayúsculas y minúsculas.
- LRECL: (Opcional) Longitud del registro (LRECL) del archivo. El valor debe ser un número entero >= 0. Si no se especifica LRECL, se supone que el archivo tiene el formato de registro de longitud indefinida (U).
- BLKSIZE: (opcional) Tamaño de bloque del archivo. Si se define como 0, el sistema determinará el tamaño de bloque óptimo. El valor debe ser un número entero igual o superior a 0. Si no especifica ningún valor, el archivo se tratará como un archivo no bloqueado.
- noseek: (Opcional) Incluya este parámetro si quiere mejorar el rendimiento de las descargas. Esta marca tiene el valor "false" de forma predeterminada, es decir, las operaciones de búsqueda están habilitadas.
Ejemplo de ejecución
gsutil cp gs://sample-bucket/MAINFRAME.DSN.FILE MAINFRAME.DSN.FILE \
--lrecl=16 --blksize=0 --recfm=fb
Configuración del ajuste de rendimiento del comando gsutil cp
Mainframe Connector admite la siguiente configuración de ajuste del rendimiento para el comando gsutil cp
.
- Usa la marca
--parallelism
para definir el número de subprocesos. El valor predeterminado es 1 (un solo subproceso). - Usa el argumento
--maxChunkSize
para definir el tamaño máximo de cada fragmento. Cada fragmento tendrá su propio archivo ORC. Aumenta este valor para reducir el número de fragmentos creados, pero ten en cuenta que esto requerirá más memoria durante el proceso de transcodificación. Para obtener más información, consulta Analizar el argumentomaxChunkSize
. El valor predeterminado es 128 MiB. - Usa el argumento
--preload_chunk_count
para definir la cantidad de datos que se van a precargar en la memoria mientras todos los trabajadores están ocupados. Este argumento puede mejorar el rendimiento a costa de la memoria. El valor predeterminado es 2.
Ejemplo de ejecución
gsutil cp \
--replace \
--parser_type=copybook \
--parallelism=8 \
--maxChunkSize=256MiB \
gs://$BUCKET/test.orc
En este ejemplo, hemos considerado un archivo grande, por lo que hemos usado 8 hilos para alcanzar la velocidad de línea. Si tienes suficiente memoria, te recomendamos que aumentes el tamaño del fragmento a 256 MiB o incluso a 512 MiB, ya que se reduce la sobrecarga de creación y finalización de objetos de Cloud Storage. En el caso de los archivos pequeños, usar menos hilos y fragmentos más pequeños puede dar mejores resultados.
Analiza el argumento maxChunkSize
La marca maxChunkSize
acepta valores en forma de importe y unidad de medida, por ejemplo, 5 MiB. Puedes usar espacios en blanco entre la cantidad y la magnitud.
Puedes proporcionar el valor en los siguientes formatos:
- Formato de Java: b/k/m/g/t para byte, kibibyte, mebibyte, gibibyte y tebibyte, respectivamente.
- Formato internacional: KiB/MiB/GiB/TiB, para kibibyte, mebibyte, gibibyte y tebibyte, respectivamente
- Formato de métrica: b/kb/mb/gb/tb, para kilobyte, megabyte, gigabyte y terabyte, respectivamente.
El análisis del tamaño de los datos no distingue entre mayúsculas y minúsculas. Ten en cuenta que no puedes especificar importes parciales. Por ejemplo, usa 716 KiB en lugar de 0,7 MiB.