0 / 0
Go back to the English version of the documentation
Rozwiązywanie problemów z produktem IBM DataStage
Last updated: 10 lis 2023
Rozwiązywanie problemów z produktem IBM DataStage

Poniższe rozwiązania ułatwiają rozwiązywanie problemów, które mogą wystąpić podczas korzystania z programu IBM® DataStage®.

Uzyskiwanie pomocy i wsparcia dla produktu DataStage

Jeśli podczas korzystania z narzędzia DataStagewystąpią problemy lub pytania, można uzyskać pomoc, wyszukując informacje lub zadając pytania na forum. Można również otworzyć zgłoszenie problemu.

Zadając pytanie na forach, należy oznaczyć pytanie tak, aby było widoczne dla zespołów programistycznych produktu DataStage .

Pytania dotyczące usługi i instrukcje Pierwsze kroki można znaleźć na forum pod adresem https://stackoverflow.com/questions/tagged/datastage.

Jeśli nadal nie można rozwiązać problemu, można otworzyć zgłoszenie do działu wsparcia IBM . Informacje na temat otwierania zgłoszenia do działu wsparcia IBM lub informacje o poziomach wsparcia zawiera sekcja "Contact support" (Kontakt z działem wsparcia) pod adresem https://cloud.ibm.com/unifiedsupport/supportcenter.

Spis treści

Zadania nie powiodły się, ponieważ instrukcja Before SQL nie została uruchomiona przed instrukcją SQL

W przypadku niektórych konektorów instrukcja Before SQL może nie zostać uruchomiona, dopóki instrukcja SQL nie zostanie już uruchomiona.

Obejście: Dodaj instrukcję zatwierdzania po każdej instrukcji SQL.

Zadanie z danymi źródłowymi z konektora SAP OData kończy się niepowodzeniem

Jeśli przepływ zawiera dane źródłowe z SAP OData, przepływ może się nie powieść, jeśli przepływ został utworzony przez ręczne dodanie kolumn, które nie są zgodne z konwencją nazewnictwa SAP .

Obejście: Zaktualizuj przepływ, dodając kolumny za pomocą przeglądarki zasobów lub zmieniając nazwy kolumn zgodnie z konwencją nazewnictwa SAP . Konwencja nazewnictwa SAP jest zgodna z hierarchią obiektów SAP z dwoma znakami podkreślenia (__) jako separatorem. Na przykład, jeśli kolumna PurchaseOrder należy do PurchaseOrderUwaga, to nazwa kolumny powinna być określona jako PurchaseOrderNote__PurchaseOrder.

Nie można uruchomić transakcyjnego SQL na danych z produktu Apache Hive w wersji 2.0 lub wcześniejszej

Jeśli dane pochodzą z produktu Apache Hive w wersji 2.0 lub wcześniejszej i przepływ DataStage wykonuje instrukcje UPDATE lub DELETE, zadanie może zakończyć się niepowodzeniem. Upewnij się, że tabela docelowa została utworzona zgodnie z wymaganiami transakcji Hive oraz że serwer Apache Hive jest skonfigurowany do obsługi operacji ACID.

Minimalny zestaw parametrów (skonfigurowany w pliku hive-site.xml ), które należy włączyć dla tabel ACID w Apache Hive , to:

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>

Więcej informacji na ten temat zawiera sekcja TransakcjeHive.

Problem braku pamięci dla operatora DataStage

Jeśli w klastrze wdrożono więcej niż 5 instancji środowiska wykonawczego PX, operatorowi może zabrakować pamięci. Aby rozwiązać ten problem, zaktualizuj plik CSV w celu zwiększenia limitów pamięci:

# Retrieve the DataStage CSS name
oc -n ${PROJECT_CPD_INST_OPERATORS} oc get csv | grep datastage


# patch the DataStage CSV to increase the operator memory from 1Gi to 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" }]'

Db2 (zoptymalizowane) połączenie z certyfikatem SSL kończy się niepowodzeniem z błędem "Protocol specific error code 414"

Jeśli w połączeniu Db2® (zoptymalizowanym) używany jest certyfikat SSL, a połączenie nie powiedzie się i zostanie zgłoszony błąd "Kod błędu 414 specyficzny dla protokołu", należy zastosować następujące obejście:

  1. Zidentyfikuj certyfikat główny na serwerze Db2 . Za pomocą tej komendy można wyświetlić łańcuch certyfikatów:
    openssl s_client -connect <hostname>:<port> -showcerts
  2. Upewnij się, że certyfikat ma ten sam podmiot i wystawcę.
  3. Na stronie Utwórz połączenie: IBM Db2 (zoptymalizowany) wprowadź certyfikat główny w polu Certyfikat SSL (ramię) .

Wykonanie komendy mailx nie powiodło się w podprogramach before-job i after-job bez informacji o serwerze SMTP

Jeśli komenda mailx jest używana w podprogramie before-job lub after-job, należy podać informacje o serwerze SMTP, w przeciwnym razie wykonanie zostanie przekażą do sendmail i zakończy się niepowodzeniem.

Wybór właściwości nie zostanie zachowany, jeśli zostanie anulowany wybór opcji Użyj właściwości DataStage .

Jeśli zostaną wprowadzone inne właściwości (na przykład dla tabel lub schematów) z zaznaczoną domyślną opcją Użyj właściwości DataStage , a następnie zostanie anulowany wybór opcji Użyj właściwości DataStage, właściwości nie zostaną zachowane.

Obejście: usuń zaznaczenie domyślnej opcji Użyj właściwości DataStage , jeśli nie zamierzasz ich używać przed wprowadzeniem innych właściwości. W przeciwnym razie ponownie wybierz właściwości.

Procedura kończy się niepowodzeniem, gdy funkcja CEL ds.getUserStatus jest uruchamiana w przepływie zewnętrznym

Gdy wbudowana funkcja CEL ds.getUserStatus jest uruchamiana w systemie docelowym, który nie znajduje się w tym samym potoku, kończy się niepowodzeniem i nie może pobrać statusu użytkownika. Zamiast tego należy użyć interfejsu CLI programu dsjob w węźle skryptu powłoki uruchamiania. Przykład przebudowywania tej komendy zawiera opis komendy dsjob używanej przez DSGetUserStatus() w sekcji Przykłady zastępowania procedur w sekcji DataStage.

Zadanie nie powiodło się podczas ładowania dużego pliku programu Excel

Zadanie z konektorem przetwarzającym duży plik programu Excel może zakończyć się niepowodzeniem z następującym błędem:

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

Spróbuj zwiększyć wielkość sterty. Opcja właściwości wielkości sterty znajduje się w sekcji Inne właściwości na karcie Etap konektora.

PostgreSQL -przekroczenie limitu czasu konektora dla dużych tabel

Konektor PostgreSQL może zakończyć się niepowodzeniem z błędem przekroczenia limitu czasu, jeśli jako źródło zostanie użyta duża tabela (ponad 100 000 wierszy). Aby naprawić ten błąd, należy ustawić wyższą wartość limitu czasu dla zmiennej środowiskowej APT_RECORD_TIMEOUT. Patrz sekcja Zarządzanie zmiennymi środowiskowymi w programie DataStage.

Wyeksportowane przepływy generują pliki połączeń JSON, które zawierają hasła w postaci jawnego tekstu

Pobrane przepływy mogą obejmować zasoby połączenia, które mają referencje lub inne poufne informacje. Można uruchomić następującą komendę, aby zmienić zachowanie eksportu w taki sposób, aby wszystkie przyszłe operacje eksportu domyślnie usuwały referencje.

oc -n ${PROJECT_CPD_INSTANCE} patch datastage datastage --patch '{"spec":{"migration_export_remove_secrets":true}}' --type=merge

Problemy podczas przeglądania tabel bazy danych z kolumnami zawierającymi znaki specjalne

Mogą wystąpić problemy podczas przeglądania tabel bazy danych za pomocą przeglądarki zasobów aplikacyjnych, jeśli wybrana tabela zawiera kolumnę ze znakami specjalnymi, takimi jak ., $lub #, i zostanie dodana do przepływu DataStage . Narzędzie DataStage nie obsługuje nazw kolumn zawierających znaki specjalne. Przepływy DataStage odwołujące się do kolumn o nazwach zawierających te znaki specjalne nie będą działać.

Aby obejść ten problem, należy utworzyć widok nad tabelą bazy danych i ponownie zdefiniować nazwę kolumny w widoku. Na przykład:

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

Następnie, korzystając z przeglądarki zasobów, znajdź widok i dodaj go do przepływu DataStage .

Niepoprawne wnioskowania przypisane do schematu odczytywanego przez przeglądarkę zasobów

Przeglądarka zasobów odczyta pierwsze 1000 rekordów i ustawi schemat, taki jak nazwa kolumny, długość, typ danych i dopuszczalność wartości pustych, na podstawie pierwszych 1000 rekordów w plikach w IBM Cloud Object Storage, Amazon S3, Google Cloud Storage, Azure File Storage, Azure Blob Storagelub Azure Data Lake. Na przykład przeglądarka zasobów aplikacyjnych może zidentyfikować kolumnę jako liczbę całkowitą na podstawie danych wykrytych w pierwszych 1000 rekordach, jednak późniejsze rekordy w pliku mogą wskazywać, że ta kolumna powinna być traktowana jako typ danych varchar . Podobnie przeglądarka zasobów aplikacyjnych może wywnioskować kolumnę jako varchar(20) , nawet jeśli późniejsze rekordy wskazują, że kolumna powinna być kolumną varchar(100).

Aby rozwiązać ten problem, wykonaj następujące czynności:
  • Profilowanie danych źródłowych w celu wygenerowania lepszych metadanych.
  • Zmień wszystkie kolumny na varchar(1024) i stopniowo zawęź typ danych.

Używanie plików sekwencyjnych jako źródła

Aby użyć plików sekwencyjnych jako źródła, należy załadować pliki do zasobnika projektu w określonym położeniu. Aby określić położenie zasobnika projektu:
  1. Znajdź instancję projektu Cloud Object Storage .
  2. W instancji projektu znajdź zasobnik odpowiadający bieżącemu projektowi. Zwykle jest to: <lowercase-project-name>-donotdelete-<random-string>

    Na przykład:project2021mar01-donotdelete-pr-ifpkjcbk71s36j

    Następnie prześlij pliki, określając wartość DataStage/files/ w polu Przedrostek dla obiektu .

Błąd podczas uruchamiania zadań z formatem pliku parquet

Podczas próby uruchomienia zadania w formacie pliku parquet może wystąpić następujący błąd:
Error: CDICO9999E: Internal error occurred: Illegal 
state error: INTEGER(32,false) can only annotate INT32.
Typy danych 32-bitowa liczba całkowita bez znaku (uint32) i 64-bitowa liczba całkowita bez znaku (uint64) nie są obsługiwane w formacie Parquet, który jest używany przez program DataStage dla wszystkich konektorów plików. Należy użyć obsługiwanych typów danych.

Zmiany schematu, które pochodzą z danych z konektora HTTP, mogą spowodować niepowodzenie zadania

Jeśli do pobrania pliku używany jest konektor HTTP, a następnie ten sam plik zostanie przesłany do produktu IBM Cloud® Object Storage lub do bazy danych, to jeśli schemat pliku ulegnie zmianie w czasie, zadanie może zakończyć się niepowodzeniem.

Obejście: Odtwórz etap.