0 / 0
Volver a la versión inglesa de la documentación
Resolución de problemas de IBM DataStage
Última actualización: 09 dic 2024
Resolución de problemas de IBM DataStage

Utilice estas soluciones como ayuda para resolver los problemas que pueda encontrar con IBM® DataStage®.

Obtención de ayuda y soporte para DataStage

Si tienes problemas o dudas al utilizar DataStage, puedes obtener ayuda buscando información o haciendo preguntas a través de un foro. También puede abrir una incidencia de soporte.

Cuando formule una pregunta en los foros, etiquete la pregunta para que la vean los equipos de desarrollo de DataStage .

Para preguntas sobre el servicio y las instrucciones de iniciación, utilice el foro en https://stackoverflow.com/questions/tagged/datastage.

Si sigue sin poder resolver el problema, puede abrir una incidencia de soporte de IBM. Para obtener información sobre cómo abrir una incidencia de soporte de IBM o sobre los niveles de soporte, consulte "Póngase en contacto con el soporte" en https://cloud.ibm.com/unifiedsupport/supportcenter.

General
Conectores
Tiempo de ejecución

Tema general

Los trabajos fallan porque las sentencias SQL y Before SQL se ejecutan en un orden incorrecto

En el conector Teradata establecido en modalidad de transacción ANSI, la sentencia SQL Before puede ejecutarse después de la sentencia SQL en lugar de antes, lo que hace que el trabajo falle.

Solución temporal: Añada una sentencia de confirmación después de cada sentencia SQL Before.

El mandato mailx no se puede ejecutar en subrutinas antes y después del trabajo sin información de servidor SMTP

Si el mandato mailx se utiliza en una subrutina anterior o posterior al trabajo, debe proporcionar la información del servidor SMTP o reenviará la ejecución a sendmail y fallará.

Las selecciones de propiedades no se conservan si deselecciona "Utilizar propiedades de DataStage "

Si especifica otras propiedades (por ejemplo, para tablas o esquemas) con la opción predeterminada Utilizar propiedades de DataStage seleccionada y, a continuación, deselecciona Utilizar propiedades de DataStage, las propiedades no se conservan.

Solución temporal: Deseleccione la opción predeterminada Utilizar propiedades de DataStage si no desea utilizarlas antes de especificar otras propiedades. De lo contrario, vuelva a seleccionar las propiedades.

La rutina falla cuando la función CEL ds.getUserStatus se ejecuta en un flujo externo

Cuando la función CEL incorporada ds.getUserStatus se ejecuta en un destino que no está dentro de la misma interconexión, falla y no puede recuperar el estado de usuario. En su lugar, utilice la CLI de dsjob en el nodo de script Ejecutar Bash.

Para ver un ejemplo de cómo reescribir esto, consulte el comando ' dsjob ' utilizado por ' DSGetUserStatus() en Ejemplos de sustitución de rutinas en DataStage.

Para ver un ejemplo de cómo reescribir esto, consulte el comando ' dsjob ' utilizado por ' DSGetUserStatus() en Ejemplos de sustitución de rutinas en DataStage.

El trabajo falla al cargar un archivo Excel grande

Un trabajo con un conector que está procesando un archivo Excel grande puede fallar con este error:

"CDICO9999E: Internal error occurred: IO error: The Excel file is too large. (error code: DATA_IO_ERROR)" 

Intente aumentar el tamaño del almacenamiento dinámico. La opción de propiedades de tamaño de almacenamiento dinámico se encuentra en la sección Otras propiedades de la pestaña Etapa del conector.

Los flujos exportados generan archivos de conexión JSON que contienen contraseñas de texto sin formato
Los flujos descargados pueden incluir activos de conexión que tengan credenciales u otra información confidencial. Puede ejecutar el mandato siguiente para cambiar el comportamiento de exportación para que todas las exportaciones futuras eliminen las credenciales de forma predeterminada.

oc -n ${PROJECT_CPD_INST_OPERANDS} patch datastage datastage --patch '{"spec":{"migration_export_remove_secrets":true}}' --type=merge
Problemas al examinar las tablas de base de datos con columnas que contienen caracteres especiales

Es posible que tenga problemas al utilizar el navegador de activos para examinar tablas de base de datos si la tabla seleccionada contiene una columna con caracteres especiales como ., $o #, y añade dicha tabla a un flujo de DataStage . DataStage no da soporte a nombres de columna que contengan caracteres especiales. Los flujos de DataStage que hacen referencia a columnas con nombres que incluyen estos caracteres especiales no funcionarán.

Para solucionar este problema, cree una vista sobre la tabla de base de datos y vuelva a definir el nombre de columna en la vista. Por ejemplo:

create view view1 as select column1$ as column1, column2# as column2 ... from table

A continuación, cuando utilice el Navegador de activos, busque la vista y añádala al flujo de DataStage.

Inferencias incorrectas asignadas a un esquema leído por el Navegador de activos

El Navegador de activos leerá los primeros 1000 registros e inferirá el esquema, como el nombre de columna, la longitud, el tipo de datos y la posibilidad de nulos, basándose en estos primeros 1000 registros en los archivos de IBM Cloud Object Storage, Amazon S3, Google Cloud Storage, Azure File Storage, Azure Blob Storage o el servicio Azure Data Lake. Por ejemplo, el navegador de activos puede identificar una columna como un entero basándose en lo que se detecta en los primeros 1000 registros, sin embargo, los registros posteriores del archivo pueden mostrar que esta columna debe tratarse como tipo de datos varchar . De forma similar, el Navegador de activos puede inferir una columna como varchar(20) aunque los registros posteriores muestren que la columna debe ser varchar(100).

Solución temporal:
  • Perfile los datos de origen para generar mejores metadatos.
  • Cambie todas las columnas para que sean varchar(1024) y reduzca gradualmente el tipo de datos.
Utilización de archivos secuenciales como origen
Para utilizar archivos secuenciales como origen, debe cargar los archivos en un grupo de proyectos en una ubicación específica. Para determinar la ubicación del grupo de proyectos:
  1. Busque la instancia de Cloud Object Storage del proyecto.
  2. En la instancia del proyecto, busque el grupo correspondiente al proyecto actual. La ubicación suele ser: <lowercase-project-name>-donotdelete-<random-string>

    Por ejemplo: project2021mar01-donotdelete-pr-ifpkjcbk71s36j

    A continuación, suba los archivos especificando DataStage/files/ en el campo Prefijo del objeto.

Error al ejecutar trabajos con un formato de archivo de parquet
Es posible que reciba el siguiente error cuando intente ejecutar un trabajo con un formato de archivo de parquet:
Error: CDICO9999E: Internal error occurred: Illegal 
state error: INTEGER(32,false) can only annotate INT32.
Los tipos de datos entero de 32 bits sin firmar (uint32) y entero de 64 bits sin firmar (uint64) no están soportados en el formato Parquet que DataStage utiliza para todos los conectores de archivo.

Solución: Debe utilizar tipos de datos compatibles.

Se está desalojando el pod de migración por exceder sus límites de almacenamiento efímero
Durante la importación, el uso del almacenamiento local efímero por parte de los pods puede superar el límite total de contenedores. Puede que reciba el mensaje siguiente:

Status: Failed
Reason: Evicted
Message: Pod ephemeral local storage usage exceeds the total limit of containers 900Mi.
Solución temporal: Para evitar este problema, debe aumentar el límite de almacenamiento efímero a 4Gi desde el valor predeterminado de 900Mi ejecutando el mandato siguiente:

oc -n ${PROJECT_CPD_INST_OPERANDS} patch datastage datastage --type merge -p '{"spec": {"custom": {"resources":{"components":{"migration":{"limits":{"ephemeral":"4Gi"}}}}}}}'
Se produce un error durante la actualización de la versión Cloud Pak for Data de 5.0.0 a 5.0.1

Es posible que se encuentre con este error al realizar la actualización de Cloud Pak for Data de 5.0.0 a 5.0.1 La actualización falla en nuevas tareas de actualización para las instancias remotas.

Solución: Cuando el DataStage CR está alternando entre Failed y InProgress durante la 5.0.1, siga los siguientes pasos:
  1. Inicie sesión en el Red Hat® OpenShift Container Platform clúster de oc y establezca la ruta predeterminada del proyecto en el lugar donde está instalado el Cloud Pak for Data.
    oc project $PROJECT_CPD_INST_OPERANDS
  2. Compruebe si las instancias de PXRruntime se han actualizado correctamente a la versión 5.0.1.
    oc get pxruntime
  3. Si el CR PXRruntime no se actualiza correctamente a la versión 5.0.1, ejecute los siguientes comandos:
    
    echo "Adding installedVersion to DataStage CR"
    oc patch datastage datastage --type='json' -p='[{"op": "add", "path": "/spec/installedVersion", "value": "5.0.1" }]'
    while true; do echo "Waiting for DataStage CR to be in Completed state"; sleep 30; if [ $(oc get datastage datastage -o=jsonpath="{.status.dsStatus}") = "Completed" ]; then break; fi; done
    echo "Removing installedVersion from DataStage CR"
    oc patch datastage datastage --type='json' -p='[{"op": "remove", "path": "/spec/installedVersion"}]'
    while true; do echo "Waiting for DataStage CR to be in Completed state"; sleep 30; if [ $(oc get datastage datastage -o=jsonpath="{.status.dsStatus}") = "Completed" ]; then break; fi; done
Los flujos que contienen la etapa Transformer expiran durante la compilación

Puede producirse un tiempo de espera al compilar flujos que contengan la etapa de transformador.

Valor por defecto de la variable de entorno ' APT_COMPILEOPT:
-c -O -fPIC -Wno-deprecated -m64 -mtune=generic -mcmodel=small
Solución: Desactive la optimización en tiempo de compilación cambiando ' -O ' por ' -O0 en las opciones de compilación de la variable de entorno ' APT_COMPILEOPT ':
-c -O0 -fPIC -Wno-deprecated -m64 -mtune=generic -mcmodel=small

Conectores

Netezza : Se producen registros duplicados cuando se habilitan las lecturas particionadas

Cuando se habilitan las lecturas particionadas en el conector Netezza en modo de ejecución paralela, pueden producirse registros duplicados. Para evitar registros duplicados, añada marcadores de posición de partición en el SQL o establezca la modalidad de ejecución en secuencial. Para añadir marcadores de posición de partición, añada la serie mod(datasliceid,[[node-count]])=[[node-number]], como en el ejemplo siguiente.
SELECT * FROM table WHERE mod(datasliceid,[[node-count]])=[[node-number]]
Conector MySQL : los trabajos pueden fallar si utiliza la modalidad de escritura "Update" para el destino sin una clave primaria

Si crea una tabla en una base de datos MySQL sin especificar una clave primaria en la columna WHERE y, a continuación, intenta ejecutar un trabajo que utiliza dicha tabla con la modalidad de escritura Actualizar para el destino, el trabajo podría fallar.

Solución: Especifique un nombre de clave primaria en el campo Nombres de columna de clave . Si la tabla es grande y no tiene una columna primaria, puede crear una columna separada con valores de incremento automático para utilizarla como clave primaria.

Conector FTP: la vía de acceso del directorio de inicio se añade como prefijo a la vía de acceso

Cuando ejecuta un trabajo que utiliza datos de un origen de datos FTP, el directorio de inicio o de inicio de sesión se añade como prefijo a la vía de acceso que ha especificado. Esta acción se produce independientemente de si especifica una vía de acceso absoluta (con una barra inclinada inicial) o una vía de acceso relativa (sin una barra inclinada inicial). Por ejemplo, si especifica el directorio como /tmp/SampleData.txt, la vía de acceso se resuelve en /home/username/tmp/SampleData.txt.

Solución temporal: Edite el Nombre de archivo en el conector FTP. Especifique la vía de acceso absoluta al archivo de origen o de destino.

Los trabajos fallan con el error "El conector no ha podido establecer una conexión con la base de datos Db2 "

Los trabajos pueden fallar con el error "El conector no ha podido establecer una conexión con la base de datos Db2 ".

Solución temporal: Vaya a las propiedades de conexión y establezca la propiedad Opciones en connectTimeout=0.

El trabajo con datos de origen de un conector SAP OData falla

Si el flujo incluye datos de origen de SAP OData, el flujo puede fallar si ha creado el flujo añadiendo manualmente columnas que no siguen el convenio de denominación de SAP .

Solución temporal: Actualice el flujo añadiendo o añadiendo las columnas con el navegador de activos o renombrando las columnas de acuerdo con el convenio de denominación SAP . El convenio de denominación SAP sigue la jerarquía de objetos SAP con dos caracteres de subrayado (__) como separador. Por ejemplo, si la columna PurchaseOrder pertenece a NotaDePedidoDeCompra, entonces el nombre de la columna debe especificarse como PurchaseOrderNote__PurchaseOrder.

No se puede ejecutar SQL transaccional en datos de Apache Hive versión 2.0 o anterior

Si los datos proceden de Apache Hive versión 2.0 o anterior y el flujo de DataStage ejecuta sentencias UPDATE o DELETE, el trabajo podría fallar. Asegúrese de que la tabla de destino se haya creado de acuerdo con los requisitos de transacciones Hive y de que el servidor Apache Hive esté configurado para dar soporte a las operaciones ACID.

El conjunto mínimo de parámetros (configurados en el archivo hive-site.xml ) que debe habilitar para las tablas ACID en Apache Hive es:

hive.support.concurrency = true
hive.enforce.bucketing = true (not required as of Hive 2.0)
hive.exec.dynamic.partition.mode = nonstrict
hive.txn.manager = org.apache.hadoop.hive.ql.lockmgr.DbTxnManager

hive.compactor.initiator.on = true
hive.compactor.worker.threads = <a positive number>

Para más información, consulte TransaccionesHive.

IBM Db2 for DataStage falla la conexión con el certificado SSL con el error "Código de error específico de protocolo 414"

Si utiliza un certificado SSL en la conexión de IBM Db2 para DataStage y la conexión falla con un error "Código de error específico de protocolo 414", utilice este método alternativo:

  1. Identifique el certificado raíz en el servidor de Db2 . Puede utilizar este mandato para ver la cadena de certificados:
    openssl s_client -connect <hostname>:<port> -showcerts
  2. Asegúrese de que el certificado tenga el mismo asunto y emisor.
  3. En la página Crear conexión: IBM IBM Db2 para DataStage , especifique el certificado raíz en el campo Certificado SSL (arm) .
Error al parametrizar el campo de credenciales para una conexión de flujo en IBM Cloud Object Storage

Cuando la propiedad Método de autenticación se establece en Credenciales de servicio (fragmento de código JSON completo), no parametrice el campo Credenciales de servicio . Si se proporciona un parámetro para ese campo, el flujo no se compilará.

PostgreSQL conector excede el tiempo de espera en tablas grandes

El conector PostgreSQL puede fallar con un error de tiempo de espera cuando se utiliza una tabla de gran tamaño (más de 100.000 filas) como fuente. Para solucionar este error, intente establecer un valor de tiempo de espera más alto para la variable de entorno APT_RECORD_TIMEOUT. Ver ' Gestión de variables de entorno en ' DataStage 'Gestión de variables de entorno en ' DataStage.

Los cambios de esquema que se originan en los datos del conector HTTP pueden hacer que el trabajo falle

Cuando utilice el conector HTTP para descargar un archivo y, a continuación, cargar el mismo archivo en IBM Cloud Object Storage o en una base de datos, si el esquema del archivo cambia con el tiempo, el trabajo podría fallar.

Solución temporal: Vuelva a crear la etapa.

No se puede crear una conexión de base de datos correcta que utilice el certificado SSL

La versión OpenSSL 3.0.9 no permite utilizar cifrados débiles al generar el certificado SSL. Cuando el atributo ValidateServerCertificate (VSC ) tiene el valor ' 0' , la conexión trata el certificado como no válido. El valor debe ser ' 1 ' para crear una conexión.

Solución: Genere un nuevo certificado SSL con cifrado seguro utilizando la versión OpenSSL 3.0.x.
  1. Compruebe los cifrados de su certificado SSL con el siguiente comando. Si el certificado utiliza el algoritmo de firma " sha1WithRSAEncryption ", se considera un cifrado débil:
    openssl x509 -in cert.pem -text -noout
  2. Genere el certificado SSL con el siguiente comando:
    openssl.exe pkcs12 -in certificate_name -export -out truststore_filename -nokeys -keypbe cryptographic_algorithm -certpbe cryptographic_algorithm -password pass:truststore_password -nomac

Tiempo de ejecución

Problema de falta de memoria para el operador de DataStage

Cuando se despliegan más de 5 instancias de tiempo de ejecución PX en el clúster, el operador puede quedarse sin memoria. Para resolver este problema, actualice el CSV para aumentar los límites de memoria:

Recupera el DataStage CSV:

oc -n ${PROJECT_CPD_INST_OPERATORS} oc get csv | grep datastage
Parchea el CSV de DataStage para aumentar la memoria del operador de 1Gi a 2Gi:



oc -n ${PROJECT_CPD_INST_OPERATORS} patch csv <DataStage-CSV-name> --type='json' -p='[{"op": "replace", "path": "/spec/install/spec/deployments/0/spec/template/spec/containers/0/resources/limits/memory", "value": "2Gi" }]'
Cola de trabajos cuando los pods de cálculo no se inician

Si los pods de computación de la instancia de ejecución no se inician, todos los trabajos se ejecutarán en el pod px-runtime. La limitación de recursos hace que los trabajos se pongan en cola.

Solución: Solucione cualquier problema que impida que se inicien los pods de cálculo.

Los trabajos existentes no se atascan ni se muestran en estado de Inicio o Ejecución
Cuando los trabajos obsoletos se están ejecutando, puede haber problemas para eliminarlos desde la interfaz de usuario. Puede enfrentarse a un problema similar con los proyectos, ya que es posible que utilicen recursos (por ejemplo, memoria). Para limpiar esos procesos, utilice uno de los siguientes comandos:
cpdctl asset delete --asset-id ASSET-ID --purge-on-delete=true`
cpdctl dsjob jobrunclean {{--project PROJECT | --project-id PROJID} | {--space SPACE | --space-id SPACEID}} {--name NAME | --id ID} [--run-id RUNID] [--dry-run] [--threads n] [--all-spaces] [--before YYYY-MM-DD:hh:mm:ss]
Nota: El uso de estos comandos limpia todos los trabajos activos de un proyecto. Asegúrate de haber puesto en quiescencia tu sistema operativo.