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
- Los trabajos fallan porque las sentencias SQL y Before SQL se ejecutan en un orden incorrecto
- El mandato mailx no se puede ejecutar en subrutinas antes y después del trabajo sin información de servidor SMTP
- Las selecciones de propiedades no se conservan si se anula la selección de "Usar DataStage"
- La rutina falla cuando la función CEL ds.getUserStatus se ejecuta en un flujo externo
- El trabajo falla al cargar un archivo Excel grande
- Los flujos exportados generan archivos de conexión JSON que contienen contraseñas en texto plano
- Problemas al examinar las tablas de base de datos con columnas que contienen caracteres especiales
- Inferencias incorrectas asignadas a un esquema leído por el Navegador de activos
- Utilización de archivos secuenciales como origen
- Error al ejecutar trabajos con un formato de archivo de parquet
- Se desaloja el pod de migración por exceder sus límites de almacenamiento efímero
- Se produce un error durante la actualización de la versión Cloud Pak for Data de 5.0.0 a 5.0.1
- Se agota el tiempo de compilación de un flujo que contiene la etapa transformadora
- Conectores
- Netezza®: Se producen registros duplicados cuando se habilitan las lecturas particionadas
- MySQL: Los trabajos podrían fallar si se utiliza el modo de escritura "Actualizar" para el destino sin clave primaria
- Conector FTP: la vía de acceso del directorio de inicio se añade como prefijo a la vía de acceso
- Los trabajos fallan con el error "El conector no pudo establecer una conexión con Db2® base de datos"
- Falla el trabajo con datos de origen de un conector SAP OData
- No se puede ejecutar SQL transaccional en datos de Apache Hive versión 2.0 o anterior
- IBM Db2 para DataStage la conexión con certificado SSL falla con el error "Protocol specific error code 414" error
- Error al parametrizar el campo de credenciales para una conexión de flujo en IBM Cloud® Object Storage
- PostgreSQL el conector falla en tablas grandes
- Los cambios de esquema que se originan en los datos del conector HTTP pueden hacer que el trabajo falle
- No se puede crear una conexión de base de datos correcta que utilice el certificado SSL
- Conector Snowflake: Los trabajos fallan con el error "java/lang/OutOfMemoryError"
- Conector Snowflake: Los trabajos fallan con el error "Fork failed: Recurso temporalmente no disponible
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 asendmail
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 dedsjob
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:
- Busque la instancia de Cloud Object Storage del proyecto.
- 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:
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.Error: CDICO9999E: Internal error occurred: Illegal state error: INTEGER(32,false) can only annotate INT32.
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:
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:Status: Failed Reason: Evicted Message: Pod ephemeral local storage usage exceeds the total limit of containers 900Mi.
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:- 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
- Compruebe si las instancias de PXRruntime se han actualizado correctamente a la versión 5.0.1.
oc get pxruntime
- 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
- Inicie sesión en el Red Hat® OpenShift Container Platform clúster de
- 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:
- 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
- Asegúrese de que el certificado tenga el mismo asunto y emisor.
- En la página Crear conexión: IBM IBM Db2 para DataStage , especifique el certificado raíz en el campo Certificado SSL (arm) .
- Identifique el certificado raíz en el servidor de Db2 . Puede utilizar este mandato para ver la cadena de certificados:
- 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
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.