Resolução de problemas do IBM DataStage .
Use essas soluções para ajudar a resolver problemas que você pode encontrar com o IBM® DataStage®
Obtendo ajuda e suporte para DataStage
Se tiver problemas ou dúvidas ao usar o DataStage, você pode obter ajuda pesquisando informações ou fazendo perguntas em um fórum. Também é possível abrir um chamado de suporte.
Ao fazer uma questão nos fóruns, identifique-a para que seja vista pelas equipes de desenvolvimento do DataStage .
Para perguntas sobre o serviço e instruções de introdução, use o fórum em https://stackoverflow.com/questions/tagged/datastage.
Se você ainda não puder resolver o problema, será possível abrir um chamado de suporte IBM. Para obter informações sobre como abrir um chamado de suporte IBM ou sobre níveis de suporte, consulte "Contact support" em https://cloud.ibm.com/unifiedsupport/supportcenter.
- Geral
- As tarefas falham porque as instruções SQL e Before SQL são executadas em ordem incorreta
- O comando mailx falha ao ser executado em sub-rotinas antes da tarefa e após a tarefa sem informações do servidor SMTP
- As seleções de propriedades não serão preservadas se você desmarcar a opção "Usar DataStage"
- A rotina falha quando a função CEL ds.getUserStatus é executada em um fluxo externo
- A tarefa falha ao carregar um arquivo Excel grande
- Os fluxos exportados geram arquivos de conexão JSON que contêm senhas de texto simples
- Perguntas sobre navegação das tabelas de banco de dados com colunas que contêm caracteres especiais
- Inferências incorretas designadas a um esquema lido pelo Asset Browser
- Usando arquivos sequenciais como uma origem
- Erro na execução de tarefas com um formato de arquivo parquet
- O pod de migração sendo despejado por exceder seus limites de armazenamento efêmeros
- Ocorre um erro durante a atualização da versão do Cloud Pak for Data de 5.0.0 para 5.0.1
- A compilação de um fluxo que contém o estágio do transformador está com o tempo esgotado
- O uso do armazenamento local efêmero excede o limite total de um contêiner
- Conectores
- Netezza® conector: Ocorrem registros duplicados quando as leituras particionadas estão ativadas
- MySQL conector: Os trabalhos poderão falhar se você usar o modo de gravação "Update" para o destino sem uma chave primária
- Conector FTP: O caminho do diretório inicial é anexado ao caminho
- Os trabalhos falham com o erro "O conector não pôde estabelecer uma conexão com o banco de dados Db2®"
- O trabalho com dados de origem de um SAP OData falha
- Não é possível executar SQL transacional em dados da Apache Hive versão 2.0 ou anterior
- IBM Db2 para DataStage conexão com certificado SSL falha com o erro "Código de erro específico de protocolo 414"
- Erro ao parametrizar o campo de credencial para uma conexão de fluxo no IBM Cloud® Object Storage
- PostgreSQLO conector atinge o tempo limite em tabelas grandes
- As alterações de esquema originadas nos dados do conector HTTP podem causar falha no trabalho
- Não é possível criar uma conexão de banco de dados bem-sucedida que use o certificado SSL
- Snowflake conector: Os trabalhos estão falhando com o erro "java/lang/OutOfMemoryError"
- Snowflake conector: Os trabalhos estão falhando com o erro "Fork failed: Recurso temporariamente indisponível"
Geral
- Tarefas falham porque as instruções SQL e Before SQL são executadas em ordem incorreta
No conector Teradata configurado para o modo de transação ANSI, a instrução SQL Antes pode ser executada após a instrução SQL em vez de antes, causando a falha da tarefa.
Solução alternativa: inclua uma instrução de confirmação após cada instrução SQL anterior.
- O comando mailx falha ao ser executado nas sub-rotinas antes e após a tarefa sem informações do servidor SMTP
Se o comando
mailxfor usado em uma sub-rotina antes ou após a tarefa, você deverá fornecer as informações do servidor SMTP ou ele encaminhará a execução parasendmaile falhará.
- Seleções de propriedades não preservadas se você cancelar a seleção de "Usar propriedades do DataStage "
Se você inserir outras propriedades (por exemplo, para tabelas ou esquemas) com a opção padrão Usar propriedades do DataStage selecionada e, em seguida, desmarcar Usar propriedades do DataStage, as propriedades não serão preservadas.
Solução alternativa: cancele a seleção das propriedades padrão Usar DataStage se você pretende não usá-las antes de inserir outras propriedades... Caso contrário, selecione novamente as propriedades..
- A rotina falha quando a função CEL ds.getUserStatus é executada em um fluxo externo
Quando a função CEL integrada
ds.getUserStatusé executada em um destino que não está no mesmo pipeline, ela falha e não pode recuperar o status do usuário. Em vez disso, use a CLI dodsjobem seu nó de script Executar Bash.
- A tarefa falha ao carregar um arquivo Excel grande
Uma tarefa com um conector que está processando um arquivo Excel grande pode falhar com este erro:
"CDICO9999E: Internal error occurred: IO error: The Excel file is too large. (error code: DATA_IO_ERROR)"Tente aumentar o tamanho de heap.. A opção de propriedades de tamanho de heap está na seção Outras propriedades da guia Estágio do conector
- Os fluxos exportados geram arquivos de conexão JSON que contêm senhas de texto simples
- Os fluxos transferidos por download podem incluir ativos de conexão que possuem credenciais ou outras informações confidenciais É possível executar o comando a seguir para mudar o comportamento de exportação para que todas as exportações futuras removam as credenciais por padrão
oc -n ${PROJECT_CPD_INST_OPERANDS} patch datastage datastage --patch '{"spec":{"migration_export_remove_secrets":true}}' --type=merge
- Perguntas sobre navegação das tabelas de banco de dados com colunas que contêm caracteres especiais
Você pode ter problemas ao usar o Navegador de Ativos para navegar pelas tabelas de banco de dados se a tabela selecionada contiver uma coluna com caracteres especiais como ., $ou #e incluir essa tabela em um fluxo do DataStage . O DataStage não suporta nomes de coluna que contenham caracteres especiais. DataStage fluxos que fazem referência a colunas com nomes que incluem esses caracteres especiais não funcionarão.
Para contornar esse problema, crie uma visualização por meio da tabela de banco de dados e redefina o nome da coluna na visualização. Por exemplo:
create view view1 as select column1$ as column1, column2# as column2 ... from tableEm seguida, ao usar o Asset Browser, localize a visualização e inclua-a no fluxo do DataStage.
- Inferências incorretas designadas a um esquema lido pelo Asset Browser
O Asset Browser irá ler os primeiros 1.000 registros e inferir o esquema, como nome da coluna, comprimento, tipo de dados e anulável, com base nestes primeiros 1.000 registros nos arquivos no IBM Cloud Object Storage, Amazon S3, Google Cloud Storage, Azure File Storage, Azure Blob Storage ou o serviço Azure Data Lake. Por exemplo, o Asset Browser pode identificar uma coluna como um inteiro com base no que é detectado nos primeiros 1000 registros, no entanto, registros posteriores no arquivo podem mostrar que esta coluna deve ser tratada como tipo de dados varchar . Da mesma forma, o Asset Browser pode inferir uma coluna como varchar(20), mesmo que os registros posteriores mostrem que a coluna deve ser varchar(100).
Solução alternativa:- Faça o perfil dos dados de origem para gerar melhores metadados.
- Mude todas as colunas para serem varchar(1024) e limite gradualmente o tipo de dados.
- Usando arquivos sequenciais como uma origem
- Para usar arquivos sequenciais como uma origem, deve-se carregar arquivos em um depósito de projeto em um local específico. Para determinar o local do depósito do projeto:
- Localize a instância do projeto Cloud Object Storage.
- Na instância do projeto, localize o depósito correspondente ao projeto atual. O local geralmente é:
<lowercase-project-name>-donotdelete-<random-string>Por exemplo:
project2021mar01-donotdelete-pr-ifpkjcbk71s36jEm seguida, faça upload dos arquivos especificando
DataStage/files/no campo Prefixo para o objeto.
- Erro na execução de tarefas com um formato de arquivo parquet
- Você pode receber o seguinte erro quando tentar executar uma tarefa com um formato de arquivo parquet:
Os tipos de dados de número inteiro não assinado de 32 bits (uint32) e de número inteiro não assinado de 64 bits (uint64) não são suportados no formato Parquet que o DataStage está usando para todos os conectores de arquivo.Error: CDICO9999E: Internal error occurred: Illegal state error: INTEGER(32,false) can only annotate INT32.Correção: Você deve usar tipos de dados compatíveis.
- O pod de migração sendo despejado por exceder seus limites de armazenamento efêmeros
- Durante a importação, o uso do pod do armazenamento local efêmero pode exceder o limite total de contêineres. Você pode receber a mensagem a seguir:
Solução alternativa: para evitar esse problema, é necessário aumentar o limite de armazenamento efêmero para 4Gi do padrão de 900Mi executando o comando a seguir: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"}}}}}}}'
- Ocorre um erro durante a atualização da versão do Cloud Pak for Data de 5.0.0 para 5.0.1
Você pode enfrentar esse erro ao executar a atualização do Cloud Pak for Data de 5.0.0 para 5.0.1 A atualização falha em novas tarefas de atualização para as instâncias remotas.
Correção: Quando o DataStage CR estiver alternando entre Failed (Falha) e InProgress durante a atualização 5.0.1, siga as etapas a seguir:- Faça login no Red Hat® OpenShift Container Platform cluster por
oce defina o caminho padrão do projeto para onde o Cloud Pak for Data está instalado.oc project $PROJECT_CPD_INST_OPERANDS - Verifique se as instâncias do PXRruntime foram atualizadas com êxito para a versão 5.0.1.
oc get pxruntime - Se o PXRruntime CR não tiver sido atualizado com êxito para a versão 5.0.1, execute os seguintes 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
- Faça login no Red Hat® OpenShift Container Platform cluster por
- Os fluxos que contêm o estágio Transformer expiram durante a compilação
Pode ocorrer um tempo limite durante a compilação de fluxos que contêm o estágio do transformador.
Valor padrão da variável de ambiente 'APT_COMPILEOPT:-c -O -fPIC -Wno-deprecated -m64 -mtune=generic -mcmodel=smallSolução alternativa: Desative a otimização do tempo de compilação alterando "-Opara "-O0nas opções de compilação na variável de ambiente "APT_COMPILEOPT:-c -O0 -fPIC -Wno-deprecated -m64 -mtune=generic -mcmodel=small
- O uso do armazenamento local efêmero excede o limite total de um contêiner
Conectores
- Conector Netezza : Registros duplicados ocorrem quando leituras particionadas são ativadas
-
Quando leituras particionadas são ativadas no conector Netezza no modo de execução paralela, podem ocorrer registros duplicados. Para evitar registros duplicados, inclua itens temporários de partição na SQL ou configure o modo de execução para sequencial... Para incluir itens temporários de partição, inclua a sequência
mod(datasliceid,[[node-count]])=[[node-number]], como no exemplo a seguir:SELECT * FROM table WHERE mod(datasliceid,[[node-count]])=[[node-number]]
- Conector MySQL : As tarefas poderão falhar se você usar o modo de gravação "Atualizar" para o destino sem uma chave primária
Se você criar uma tabela em um banco de dados MySQL sem especificar uma chave primária na coluna WHERE e, em seguida, tentar executar uma tarefa que usa essa tabela com o modo de gravação Atualizar para o destino, a tarefa poderá falhar.
Solução: Especifique um nome de chave primária no campo Nomes de Colunas-chave . Se a tabela for grande e não tiver uma coluna primária, será possível criar uma coluna separada com valores de incremento automático a serem usados como a chave primária
- Conector FTP: O caminho do diretório inicial é pré-anexado ao caminho
Quando você executa uma tarefa que usa dados de uma origem de dados FTP, o diretório inicial ou de login é pré-anexado ao caminho especificado. Essa ação acontece independentemente se você especificar um caminho absoluto (com uma barra inicial) ou um caminho relativo (sem uma barra inicial). Por exemplo, se você especificar o diretório como
/tmp/SampleData.txt, o caminho será resolvido para/home/username/tmp/SampleData.txtSolução alternativa: edite o Nome do arquivo no conector FTP. Especifique o caminho absoluto para o arquivo de origem ou de origem.
- As tarefas falham com o erro "O conector não pôde estabelecer uma conexão com o banco de dados Db2 "
As tarefas podem falhar com o erro "O conector não pôde estabelecer uma conexão com o banco de dados Db2 ".
Solução alternativa: acesse as propriedades da conexão e configure a propriedade Opções como
connectTimeout=0.
- A tarefa com dados de origem de um conector SAP OData falha
Se seu fluxo incluir dados de origem de SAP OData, o fluxo poderá falhar se você criou o fluxo incluindo manualmente colunas que não seguem a convenção de nomenclatura SAP .
Solução alternativa: atualize o fluxo ou inclua as colunas com o navegador Ativo ou renomeie as colunas de acordo com a convenção de nomenclatura SAP . A convenção de nomenclatura SAP segue a hierarquia de objetos SAP com dois caracteres de sublinhado (
__) como um separador. Por exemplo, se a coluna PurchaseOrder pertencer a PurchaseOrderNote, o nome da coluna deverá ser especificado como PurchaseOrderNote__PurchaseOrder.
- Não é possível executar SQL transacional em dados do Apache Hive versão 2.0 ou anterior
Se seus dados forem do Apache Hive versão 2.0 ou anterior e seu fluxo do DataStage executar instruções UPDATE ou DELETE, a tarefa poderá falhar. Certifique-se de que a tabela de destino tenha sido criada de acordo com os requisitos de transações do Hive e que o servidor Apache Hive esteja configurado para suportar operações ACID.
O conjunto mínimo de parâmetros (configurado no arquivo hive-site.xml ) que deve ser ativado para tabelas ACID no 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>Para obter mais informações, consulte Hive Transactions.
- IBM Db2 para DataStage A conexão com o certificado SSL falha com o erro "Código de erro específico do protocolo 414"
Se você usar um certificado SSL na conexão do IBM Db2 for DataStage e a conexão falhar com um erro "Código de erro específico do protocolo 414", use esta solução alternativa:
- Identificar o certificado raiz no servidor Db2 . É possível usar este comando para visualizar a cadeia de certificados:
openssl s_client -connect <hostname>:<port> -showcerts - Assegure-se de que o certificado tenha o mesmo assunto e emissor.
- Na página Criar conexão: IBM IBM Db2 for DataStage , insira o certificado raiz no campo Certificado SSL (arm) .
- Identificar o certificado raiz no servidor Db2 . É possível usar este comando para visualizar a cadeia de certificados:
- Erro ao parametrizar o campo de credencial para uma conexão de fluxo no IBM Cloud Object Storage
Quando a propriedade Método de autenticação for configurada como Credenciais de serviço (fragmento JSON completo), não parametrize o campo Credenciais de serviço Se for fornecido um parâmetro para esse campo, o fluxo não será compilado.
- O conector PostgreSQL atinge o tempo limite em tabelas grandes
O conector PostgreSQL pode falhar com um erro de tempo limite quando uma tabela grande (mais de 100.000 linhas) é usada como fonte. Para corrigir esse erro, tente configurar um valor de tempo limite mais alto para a variável de ambiente APT_RECORD_TIMEOUT. Veja .
- As alterações de esquema originadas nos dados do conector HTTP podem causar falha no trabalho
Quando você usa o conector HTTP para fazer download de um arquivo e, em seguida, fazer upload do mesmo arquivo no IBM Cloud Object Storage ou em um banco de dados, se o esquema do arquivo mudar com o tempo, o trabalho poderá falhar.
Workaround: Re-criar o estágio.
- Não é possível criar uma conexão de banco de dados bem-sucedida que use o certificado SSL
- Snowflake conector: Os trabalhos estão falhando com o erro "java/lang/OutOfMemoryError"
- Snowflake conector: Os trabalhos estão falhando com o erro "Fork failed: Recurso temporariamente indisponível"
Tempo de execução
- Problema de falta de memória para o operador DataStage
Quando mais de 5 instâncias de tempo de execução PX são implementadas no cluster, o operador pode ficar sem memória. Para resolver este problema, atualize o CSV para aumentar os limites de memória:
Recupere o DataStage CSV:oc -n ${PROJECT_CPD_INST_OPERATORS} oc get csv | grep datastageCorrija o DataStage CSV para aumentar a memória do operador de 1Gi para 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" }]'
- Fila de trabalhos quando os pods de computação não conseguem iniciar
Se os pods de computação da instância de tempo de execução não forem iniciados, todos os trabalhos serão executados no pod px-runtime. Os limites de recursos fazem com que os trabalhos fiquem na fila.
Solução de problemas: Corrija todos os problemas que estão impedindo a inicialização dos pods de computação.
- Os trabalhos ficam presos, trabalhos inexistentes são exibidos no estado Iniciando/Executando
- Quando seus trabalhos obsoletos estão em execução, você pode ter problemas para excluí-los da interface do usuário. Você pode enfrentar um problema semelhante com os projetos porque eles podem usar recursos (por exemplo, memória). Para limpar esses processos, use um dos seguintes 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]Observação: O uso desses comandos limpa todos os trabalhos ativos em um projeto. Certifique-se de interromper a execução de novos trabalhos.