Translation not up to date
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 kończą się niepowodzeniem, ponieważ instrukcja Before SQL nie jest wykonywana przed instrukcją SQL
- Zadanie z danymi źródłowymi z konektora SAP OData kończy się niepowodzeniem
- Nie można uruchomić transakcyjnego SQL na danych z produktu Apache Hive w wersji 2.0 lub wcześniejszej
- Problem z brakiem pamięci dla operatora DataStage
- Db2 (zoptymalizowane) połączenie z certyfikatem SSL kończy się niepowodzeniem z błędem "Protocol specific error code 414"
- Wykonanie komendy mailx nie powiodło się w podprogramach before-job i after-job bez informacji o serwerze SMTP
- Wybór właściwości nie jest zachowywany, jeśli zostanie anulowany wybór opcji "Użyj właściwości DataStage "
- Procedura kończy się niepowodzeniem, gdy funkcja CEL ds.getUserStatus jest uruchamiana w przepływie zewnętrznym
- Zadanie kończy się niepowodzeniem podczas ładowania dużego pliku programu Excel
- PostgreSQL przekracza limit czasu dla dużych tabel
- Problemy z przeglądaniem tabel bazy danych z kolumnami zawierającymi znaki specjalne
- Niepoprawne wnioskowania przypisane do schematu odczytywanego przez przeglądarkę zasobów
- Używanie plików sekwencyjnych jako źródła
- Błąd podczas uruchamiania zadań z formatem pliku parquet
- Zmiany schematu, które pochodzą z danych z konektora HTTP, mogą spowodować niepowodzenie zadania
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
# 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:
- 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
- Upewnij się, że certyfikat ma ten sam podmiot i wystawcę.
- 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
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).
- 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
- Znajdź instancję projektu Cloud Object Storage .
- 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
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.