Risoluzione dei problemi IBM DataStage
Utilizzare queste soluzioni per risolvere i problemi che potrebbero verificarsi con IBM® DataStage®.
Come ottenere aiuto e supporto per DataStage
Se avete problemi o domande quando utilizzate DataStage, potete ottenere aiuto cercando informazioni o ponendo domande attraverso un forum. Puoi inoltre aprire un ticket di supporto.
Quando fai una domanda nei forum, contrassegna con una tag la tua domanda in modo che sia vista dai team di sviluppo DataStage .
Per domande sul servizio e istruzioni introduttive, utilizza il forum all'indirizzo https://stackoverflow.com/questions/tagged/datastage.
Se ancora non riesci a risolvere il problema, puoi aprire un ticket di supporto IBM. Per informazioni su come aprire un ticket di assistenza IBM o sui livelli di supporto, vedi "Contatta il supporto" all'indirizzo https://cloud.ibm.com/unifiedsupport/supportcenter.
- Generale
- I lavori non riescono perché le istruzioni SQL e Before SQL vengono eseguite in ordine non corretto
- Il comando mailx non viene eseguito nelle sottoroutine pre - lavoro e post - lavoro senza le informazioni sul server SMTP
- Le selezioni delle proprietà non vengono conservate se si deseleziona "Usa DataStage"
- La routine ha esito negativo quando la funzione CEL ds.getUserStatus viene eseguita su un flusso esterno
- Il lavoro non riesce quando si carica un file Excel di grandi dimensioni
- I flussi esportati generano file di connessione JSON che contengono password in chiaro
- Problemi nell'esplorazione di tabelle di database con colonne che contengono caratteri speciali
- inferenze non corrette assegnate ad uno schema letto dal browser asset
- Utilizzo di file sequenziali come origine
- Errore durante l'esecuzione dei lavori con un formato file parquet
- Il pod di migrazione viene espulso per aver superato i limiti di memoria effimeri
- Si verifica un errore durante l'aggiornamento della versione Cloud Pak for Data da 5.0.0 a 5.0.1
- La compilazione di un flusso che contiene lo stadio trasformatore è scaduta
- Connettori
- Netezza® connettore: Si verificano record duplicati quando sono abilitate le letture partizionate
- MySQL connettore: I lavori potrebbero fallire se si utilizza la modalità di scrittura "Update" per la destinazione senza una chiave primaria
- Connettore FTP: il percorso della directory home viene aggiunto al percorso
- I lavori falliscono con l'errore "Il connettore non ha potuto stabilire una connessione al database Db2®"
- Il job con i dati di origine da un connettore SAP OData fallisce
- Non è possibile eseguire SQL transazionale su dati provenienti da Apache Hive versione 2.0 o precedente
- IBM Db2 per DataStage la connessione con il certificato SSL non riesce con l'errore "Protocol specific error code 414"
- Errore nella parametrizzazione del campo credenziale per una connessione di flusso in IBM Cloud® Object Storage
- PostgreSQL il connettore va in tilt su tabelle di grandi dimensioni
- Le modifiche allo schema che hanno origine nei dati del connettore HTTP possono causare il fallimento del lavoro
- Non è possibile creare una connessione al database che utilizzi il certificato SSL
- Snowflake connettore: I lavori falliscono con l'errore "java/lang/OutOfMemoryError"
- Snowflake connettore: I lavori falliscono con l'errore "Fork failed: Risorsa temporaneamente non disponibile"
Generale
- I lavori hanno esito negativo perché le istruzioni SQL e Before SQL vengono eseguite in ordine non corretto
Sul connettore Teradata impostato sulla modalità di transazione ANSI, l'istruzione Before SQL può essere eseguita dopo l'istruzione SQL invece che prima, causando l'esito negativo del job.
Soluzione temporanea: aggiungere un'istruzione commit dopo ogni istruzione Before SQL.
- Il comando mailx non viene eseguito nelle sottoroutine pre - lavoro e post - lavoro senza le informazioni sul server SMTP
Se il comando
mailx
viene utilizzato in una sottoroutine pre - lavoro o post - lavoro, è necessario fornire le informazioni sul server SMTP altrimenti l'esecuzione verrà inoltrata asendmail
e avrà esito negativo.
- Le selezioni delle proprietà non vengono conservate se si deseleziona "Utilizza proprietà DataStage "
Se si immettono altre proprietà (ad esempio per tabelle o schemi) con l'opzione predefinita Utilizza proprietà DataStage selezionata e si deseleziona Utilizza proprietà DataStage, le proprietà non vengono conservate.
Soluzione temporanea: deselezionare le proprietà predefinite Utilizza DataStage se si desidera non utilizzarle prima di immettere altre proprietà. Altrimenti, riselezionare le proprietà.
- La routine ha esito negativo quando la funzione CEL ds.getUserStatus viene eseguita su un flusso esterno
Quando la funzione CEL integrata
ds.getUserStatus
viene eseguita su una destinazione che non è all'interno della stessa pipeline, ha esito negativo e non può recuperare lo stato utente. Utilizza invece la CLIdsjob
nel tuo nodo Esegui script Bash.Per un esempio di riscrittura, si veda il comando
dsjob
utilizzato daDSGetUserStatus()
in Esempi di sostituzione di routine in DataStage.
- Il job non riesce quando si carica un file Excel di grandi dimensioni
Un job con un connettore che sta elaborando un file Excel di grandi dimensioni potrebbe non riuscire con questo errore:
"CDICO9999E: Internal error occurred: IO error: The Excel file is too large. (error code: DATA_IO_ERROR)"
Provare ad incrementare la dimensione heap. L'opzione Proprietà dimensione heap si trova nella sezione Altre proprietà della scheda Stage del connettore.
- I flussi esportati generano i file di connessione JSON che contengono password in testo semplice
- I flussi scaricati potrebbero includere asset di connessione che dispongono di credenziali o altre informazioni sensibili. È possibile eseguire il seguente comando per modificare il comportamento dell'esportazione in modo che tutte le esportazioni future rimuovano le credenziali per default.
oc -n ${PROJECT_CPD_INST_OPERANDS} patch datastage datastage --patch '{"spec":{"migration_export_remove_secrets":true}}' --type=merge
- Problemi durante la ricerca delle tabelle di database con colonne che contengono caratteri speciali
Potrebbero verificarsi dei problemi quando si utilizza il Browser degli asset per sfogliare le tabelle del database se la tabella selezionata contiene una colonna con caratteri speciali come ., $o #e si aggiunge tale tabella in un flusso DataStage . DataStage non supporta i nomi colonna che contengono caratteri speciali. DataStage flussi che fanno riferimento a colonne con nomi che includono questi caratteri speciali non funzioneranno.
Per risolvere questo problema, creare una vista sulla tabella del database e ridefinire il nome della colonna nella vista. Ad esempio:
create view view1 as select column1$ as column1, column2# as column2 ... from table
Quindi, quando si utilizza il browser Asset, individuare la vista e aggiungerla al flusso DataStage .
- Inferenze non corrette assegnate a uno schema letto da Asset Browser
L'Asset Browser leggerà i primi 1000 record e dedurrà lo schema, come il nome della colonna, la lunghezza, il tipo di dati e il nullable, in base a questi primi 1000 record nei file in IBM Cloud Object Storage, Amazon S3, Google Cloud Storage, Azure File Storage, Azure Blob Storage, o il servizio Azure Data Lake. Ad esempio, il Browser asset potrebbe identificare una colonna come un numero intero in base a quanto rilevato nei primi 1000 record, tuttavia, i record successivi nel file potrebbero mostrare che questa colonna deve essere trattata come tipo di dati varchar . Allo stesso modo, il Browser asset potrebbe dedurre una colonna come varchar(20) anche se i record successivi mostrano che la colonna deve essere varchar(100).
Risoluzione:- Creare un profilo dei dati di origine per generare metadati migliori.
- Modificare tutte le colonne in varchar(1024) e restringere gradualmente il tipo di dati.
- Utilizzo di file sequenziali come origine
- Per utilizzare i file sequenziali come origine, è necessario caricare i file in un bucket del progetto in una posizione specifica. Per determinare l'ubicazione del bucket del progetto:
- Trova l'istanza Cloud Object Storage del progetto.
- Nell'istanza del progetto, trova il bucket corrispondente al progetto corrente. Di solito, l'ubicazione è:
<lowercase-project-name>-donotdelete-<random-string>
Ad esempio:
project2021mar01-donotdelete-pr-ifpkjcbk71s36j
Quindi, caricare i file specificando
DataStage/files/
nel campo Prefisso per l'oggetto .
- Errore durante l'esecuzione dei job con un formato di file parquet
- È possibile che si riceva il seguente errore quando si tenta di eseguire un lavoro con un formato di file parquet:
I tipi di dati numero intero a 32 bit senza segno (uint32) e numero intero a 64 bit senza segno (uint64) non sono supportati nel formato Parquet utilizzato da DataStage per tutti i connettori file.Error: CDICO9999E: Internal error occurred: Illegal state error: INTEGER(32,false) can only annotate INT32.
Risoluzione: È necessario utilizzare i tipi di dati supportati.
- Il pod di migrazione viene sfrattato per il superamento dei limiti di archiviazione effimeri
- Durante l'importazione, l'utilizzo dello storage locale effimero da parte dei pod può superare il limite totale dei contenitori. Si potrebbe ricevere il seguente messaggio:
Soluzione temporanea: per evitare questo problema, devi aumentare il limite di memoria effimera a 4Gi dal valore predefinito 900Mi immettendo il seguente comando: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"}}}}}}}'
- Si verifica un errore durante l'aggiornamento della versione Cloud Pak for Data da 5.0.0 a 5.0.1
È possibile che si verifichi questo errore durante l'esecuzione dell'aggiornamento di Cloud Pak for Data da 5.0.0 a 5.0.1 L'aggiornamento non riesce nelle nuove attività di aggiornamento per le istanze remote.
Risoluzione: Quando il CR DataStage si alterna tra Failed e InProgress durante l'aggiornamento 5.0.1, procedere come segue:- Accedere al cluster Red Hat® OpenShift Container Platform da
oc
e impostare il percorso del progetto predefinito dove è installato Cloud Pak for Data.oc project $PROJECT_CPD_INST_OPERANDS
- Verificare se le istanze di PXRruntime sono state aggiornate alla versione 5.0.1.
oc get pxruntime
- Se il CR PXRruntime non è stato aggiornato alla versione 5.0.1, eseguire i seguenti comandi:
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
- Accedere al cluster Red Hat® OpenShift Container Platform da
- I flussi che contengono lo stadio Transformer vanno in time out durante la compilazione
È possibile che si verifichi un timeout durante la compilazione dei flussi che contengono lo stadio trasformatore.
Valore predefinito della variabile d'ambiente "APT_COMPILEOPT
:-c -O -fPIC -Wno-deprecated -m64 -mtune=generic -mcmodel=small
Soluzione: Disattivare l'ottimizzazione in tempo di compilazione cambiando '-O
in '-O0
nelle opzioni di compilazione della variabile d'ambiente 'APT_COMPILEOPT
:-c -O0 -fPIC -Wno-deprecated -m64 -mtune=generic -mcmodel=small
Connettori
- ConnettoreNetezza : i record duplicati si verificano quando le letture partizionate sono abilitate
-
Quando la lettura partizionata è abilitata sul connettore Netezza in modalità di esecuzione parallela, è possibile che si verifichino record duplicati. Per evitare record duplicati, aggiungere segnaposto di partizione nell'SQL o impostare la modalità di esecuzione su sequenziale. Per aggiungere i segnaposto di partizione, aggiungere la stringa
mod(datasliceid,[[node-count]])=[[node-number]]
, come nel seguente esempio.SELECT * FROM table WHERE mod(datasliceid,[[node-count]])=[[node-number]]
- Connettore MySQL : i lavori potrebbero avere esito negativo se si utilizza la modalità di scrittura "Aggiorna" per la destinazione senza una chiave primaria
Se si crea una tabella in un database MySQL senza specificare una chiave primaria nella colonna WHERE e si tenta di eseguire un job che utilizza tale tabella con la modalità di scrittura Aggiorna per la destinazione, il job potrebbe non riuscire.
Soluzione: specificare un nome chiave primaria nel campo Nomi colonna chiave . Se la tabella è grande e non ha una colonna primaria, è possibile creare una colonna separata con valori di incremento automatico da utilizzare come chiave primaria.
- Connettore FTP: il percorso della directory home viene anteposto al percorso
Quando si esegue un lavoro che utilizza dati da un'origine dati FTP, la directory home o di login viene anteposto al percorso specificato. Questa azione si verifica indipendentemente se si specifica un percorso assoluto (con una barra iniziale) o un percorso relativo (senza una barra iniziale). Ad esempio, se si specifica la directory come
/tmp/SampleData.txt
, il percorso si risolve in/home/username/tmp/SampleData.txt
.Soluzione temporanea: modificare il Nome file nel connettore FTP. Specificare il percorso assoluto del file di origine o di destinazione.
- I lavori non riescono con l'errore "Il connettore non è stato in grado di stabilire una connessione al database Db2 "
I lavori potrebbero non riuscire con l'errore "Il connettore non è stato in grado di stabilire una connessione al database Db2 ".
Soluzione temporanea: passare alle proprietà di connessione e impostare la proprietà Opzioni su
connectTimeout=0
.
- Il job con i dati di origine da un connettore SAP OData non riesce
Se il tuo flusso include i dati di origine da SAP OData, il flusso potrebbe non riuscire se hai creato il flusso aggiungendo manualmente le colonne che non seguono la convenzione di denominazione SAP .
Soluzione temporanea: aggiornare il flusso aggiungendo o aggiungendo le colonne con il browser Asset o ridenominando le colonne in base alla convenzione di denominazione SAP . La convenzione di denominazione SAP segue la gerarchia di oggetti SAP con due caratteri di sottolineatura (
__
) come separatore. Ad esempio, se la colonna PurchaseOrder appartiene a Ordine d'acquistoNota, il nome della colonna deve essere specificato come PurchaseOrderNote__PurchaseOrder.
- Impossibile eseguire SQL transazionale sui dati da Apache Hive versione 2.0 o precedente
Se i dati provengono da Apache Hive versione 2.0 o precedente e il flusso DataStage esegue le istruzioni UPDATE o DELETE, il lavoro potrebbe non riuscire. Assicurarsi che la tabella di destinazione sia stata creata in base ai requisiti delle transazioni Hive e che il server Apache Hive sia configurato per supportare le operazioni ACID.
La serie minima di parametri (configurati nel file hive-site.xml ) che è necessario abilitare per le tabelle ACID in Apache Hive è:
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>
Per ulteriori informazioni, consultare Hive Transactions.
- IBM Db2 per DataStage connessione con certificato SSL non riuscita con errore "Codice di errore specifico del protocollo 414"
Se si utilizza un certificato SSL nella connessione IBM Db2 per DataStage e la connessione ha esito negativo con un errore "Codice di errore specifico del protocollo 414", utilizzare questa soluzione temporanea:
- Identificare il certificato root sul server Db2 . È possibile utilizzare questo comando per visualizzare la catena di certificati:
openssl s_client -connect <hostname>:<port> -showcerts
- Verificare che il certificato abbia lo stesso oggetto e emittente.
- Nella pagina Crea connessione: IBM IBM Db2 per DataStage , immettere il certificato root nel campo Certificato SSL (arm) .
- Identificare il certificato root sul server Db2 . È possibile utilizzare questo comando per visualizzare la catena di certificati:
- Errore nella parametrizzazione del campo delle credenziali per una connessione di flusso in IBM Cloud Object Storage
Quando la proprietà Metodo di autenticazione viene impostata sulle credenziali del servizio (frammento JSON completo), non parametrizzare il campo Credenziali del servizio . Se viene fornito un parametro per quel campo, il flusso non verrà compilato.
- PostgreSQL in timeout su tabelle di grandi dimensioni
Il PostgreSQL connettore potrebbe non funzionare con un errore di timeout quando si utilizza una tabella di grandi dimensioni (oltre 100.000 righe) come sorgente. Per correggere questo errore, provare ad impostare un valore di timeout superiore per la variabile di ambiente APT_RECORD_TIMEOUT. Vedere Gestione delle variabili d'ambiente in DataStage.
- Le modifiche allo schema che hanno origine nei dati del connettore HTTP possono causare il fallimento del lavoro
Quando si usa il connettore HTTP per scaricare un file e poi caricare lo stesso file in IBM Cloud Object Storage o in un database, se lo schema del file cambia nel tempo, il lavoro potrebbe fallire.
Soluzione temporanea: creare nuovamente la fase.
- Non è possibile creare una connessione al database che utilizzi il certificato SSL
- Snowflake connettore: I lavori falliscono con l'errore "java/lang/OutOfMemoryError"
- Snowflake connettore: I lavori falliscono con l'errore "Fork failed: Risorsa temporaneamente non disponibile"
Runtime
- Problema di memoria esaurita per l'operatore DataStage
Quando più di 5 istanze di runtime PX vengono distribuite sul cluster, l'operatore potrebbe esaurire la memoria. Per risolvere questo problema, aggiornare il CSV per aumentare i limiti di memoria:
Recupera il CSV DataStage:oc -n ${PROJECT_CPD_INST_OPERATORS} oc get csv | grep datastage
Modificare il CSV DataStage per aumentare la memoria dell'operatore da 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" }]'
- Lavori in coda quando i pod di calcolo non riescono ad avviarsi
Se i pod di calcolo dell'istanza runtime non si avviano, tutti i lavori verranno eseguiti sul pod px-runtime. I limiti delle risorse fanno sì che i lavori vengano messi in coda.
Risoluzione: Risolvere eventuali problemi che impediscono l'avvio dei pod di calcolo.
- Accodamento processi
Quando si invia un lavoro, questo potrebbe non iniziare immediatamente. Invece, ottiene uno stato di coda. È il modo in cui il sistema gestisce le risorse e stabilisce le priorità di lavoro.
Perché il lavoro viene eseguito in coda?Motivo Descrizione Limiti delle risorse Il lavoro attende che le risorse necessarie (CPU, GPU, memoria) siano disponibili. Succede quando: - Altri lavori utilizzano tutta la capacità disponibile.
- Il vostro lavoro richiede più risorse di quelle attualmente disponibili.
Limiti di concorrenza Alcuni sistemi impongono dei limiti al numero di lavori che possono essere eseguiti contemporaneamente. Il vostro lavoro viene messo in coda fino al termine di altri lavori. Priorità e programmazione I lavori a bassa priorità possono essere messi in coda mentre quelli a priorità più alta vengono eseguiti per primi. Manutenzione o tempi di inattività Il sistema può essere in fase di manutenzione o di aggiornamento, il che riduce la capacità disponibile o sospende l'esecuzione dei lavori. Coda arretrata Un traffico elevato o un numero elevato di lavori inviati possono creare un arretrato. I lavori iniziano quando i lavori precedenti sono stati completati. Risoluzione: DataStage Workload Manager (WLM) viene fornito con una configurazione predefinita che consente di eseguire 5 lavori contemporaneamente. Se si dispone di maggiori risorse, si dovrebbe scalare pxruntime su un'istanza più grande. Per ulteriori informazioni, vedere Personalizzazione delle configurazioni hardware per le istanze di servizio DataStage con la riga di comandoPersonalizzazione delle configurazioni hardware per le istanze di servizio con la riga di comando DataStage. Dopo aver modificato la configurazione della scala, è importante aggiornare il file di configurazione di WLM per consentire l'esecuzione di più lavori contemporaneamente. Pertanto, se è necessario eseguire altri lavori contemporanei, assicurarsi di regolare le impostazioni di RunJob nel file XML.
- I lavori si bloccano, i lavori inesistenti vengono visualizzati in stato Avvio/Esecuzione
- Quando i lavori in attesa sono in esecuzione, è possibile che si verifichi un problema nell'eliminarli dall'interfaccia utente. Un problema simile si può verificare con i progetti, che possono utilizzare risorse (ad esempio la memoria). Per ripulire questi processi, utilizzare uno dei seguenti comandi:
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: l' uso di questi comandi cancella tutti i lavori attivi in un progetto. Assicurati di interrompere l'esecuzione di nuovi lavori.