Rozwiązywanie problemów z łącznikiem formatu Parquet w usługach Azure Data Factory i Azure Synapse
DOTYCZY: Azure Data Factory Azure Synapse Analytics
Napiwek
Wypróbuj usługę Data Factory w usłudze Microsoft Fabric — rozwiązanie analityczne typu all-in-one dla przedsiębiorstw. Usługa Microsoft Fabric obejmuje wszystko, od przenoszenia danych do nauki o danych, analizy w czasie rzeczywistym, analizy biznesowej i raportowania. Dowiedz się, jak bezpłatnie rozpocząć nową wersję próbną !
Ten artykuł zawiera sugestie dotyczące rozwiązywania typowych problemów z łącznikiem formatu Parquet w usługach Azure Data Factory i Azure Synapse.
Kod błędu: ParquetJavaInvocationException
Komunikat:
An error occurred when invoking java, message: %javaException;.
Przyczyny i zalecenia: Różne przyczyny mogą prowadzić do tego błędu. Zapoznaj się z poniższą listą, aby zapoznać się z możliwymi analizami przyczyn i powiązanymi zaleceniami.
Analiza przyczyny Zalecenie Gdy komunikat o błędzie zawiera ciągi "java.lang.OutOfMemory", "Przestrzeń sterty Java" i "doubleCapacity", zwykle jest to problem z zarządzaniem pamięcią w starej wersji środowiska Integration Runtime. Jeśli używasz własnego środowiska IR, a wersja jest starsza niż 3.20.7159.1, zalecamy uaktualnienie do najnowszej wersji. Gdy komunikat o błędzie zawiera ciąg "java.lang.OutOfMemory", środowisko Integration Runtime nie ma wystarczającej ilości zasobów do przetworzenia plików. Ogranicz współbieżne uruchomienia w środowisku Integration Runtime. W przypadku własnego środowiska IR przeprowadź skalowanie w górę do wydajnej maszyny z pamięcią równą lub większą niż 8 GB. Gdy komunikat o błędzie zawiera ciąg "NullPointerReference", może to być błąd przejściowy. Spróbuj ponownie wykonać operację. Jeśli problem będzie się powtarzać, skontaktuj się z pomocą techniczną.
Kod błędu: ParquetInvalidFile
Komunikat:
File is not a valid Parquet file.
Przyczyna: Jest to problem z plikiem Parquet.
Zalecenie: Sprawdź, czy dane wejściowe są prawidłowym plikiem Parquet.
Kod błędu: ParquetNotSupportedType
Komunikat:
Unsupported Parquet type. PrimitiveType: %primitiveType; OriginalType: %originalType;.
Przyczyna: Format Parquet nie jest obsługiwany w potokach usługi Azure Data Factory i synapse.
Zalecenie: Sprawdź dokładnie dane źródłowe, przechodząc do pozycji Obsługiwane formaty plików i koderów kompresji przez działanie kopiowania.
Kod błędu: ParquetMissedDecimalPrecisionScale
Komunikat:
Decimal Precision or Scale information is not found in schema for column: %column;.
Przyczyna: Liczba precyzji i skalowania zostały przeanalizowane, ale nie podano żadnych takich informacji.
Zalecenie: Źródło nie zwraca prawidłowych informacji o precyzji i skali. Sprawdź kolumnę problemu, aby uzyskać informacje.
Kod błędu: ParquetInvalidDecimalPrecisionScale
Komunikat:
Invalid Decimal Precision or Scale. Precision: %precision; Scale: %scale;.
Przyczyna: Schemat jest nieprawidłowy.
Zalecenie: Sprawdź kolumnę problemu pod kątem dokładności i skali.
Kod błędu: ParquetColumnNotFound
Komunikat:
Column %column; does not exist in Parquet file.
Przyczyna: Schemat źródłowy jest niezgodność ze schematem ujścia.
Zalecenie: Sprawdź mapowania w działaniu. Upewnij się, że kolumna źródłowa może być mapowana na poprawną kolumnę ujścia.
Kod błędu: ParquetInvalidDataFormat
Komunikat:
Incorrect format of %srcValue; for converting to %dstType;.
Przyczyna: nie można przekonwertować danych na typ określony w pliku mappings.source.
Zalecenie: Sprawdź dokładnie dane źródłowe lub określ prawidłowy typ danych dla tej kolumny w mapowaniu kolumny działania kopiowania. Aby uzyskać więcej informacji, zobacz Obsługiwane formaty plików i koderów koderów kompresji według działania kopiowania.
Kod błędu: ParquetDataCountNotMatchColumnCount
Komunikat:
The data count in a row '%sourceColumnCount;' does not match the column count '%sinkColumnCount;' in given schema.
Przyczyna: Niezgodność między liczbą kolumn źródłowych a liczbą kolumn ujścia.
Zalecenie: Sprawdź dwukrotnie, aby upewnić się, że liczba kolumn źródłowych jest taka sama jak liczba kolumn ujścia w "mapowaniu".
Kod błędu: ParquetDataTypeNotMatchColumnType
Komunikat:
The data type %srcType; is not match given column type %dstType; at column '%columnIndex;'.
Przyczyna: Nie można przekonwertować danych ze źródła na typ zdefiniowany w ujściu.
Zalecenie: określ poprawny typ w pliku mapping.sink.
Kod błędu: ParquetBridgeInvalidData
Komunikat:
%message;
Przyczyna: Wartość danych przekroczyła limit.
Zalecenie: Spróbuj ponownie wykonać operację. Jeśli problem będzie się powtarzać, skontaktuj się z nami.
Kod błędu: ParquetUnsupportedInterpretation
Komunikat:
The given interpretation '%interpretation;' of Parquet format is not supported.
Przyczyna: Ten scenariusz nie jest obsługiwany.
Zalecenie: "ParquetInterpretFor" nie powinien być "sparkSql".
Kod błędu: ParquetUnsupportFileLevelCompressionOption
Komunikat:
File level compression is not supported for Parquet.
Przyczyna: Ten scenariusz nie jest obsługiwany.
Zalecenie: Usuń element "CompressionType" w ładunku.
Kod błędu: UserErrorJniException
Komunikat:
Cannot create JVM: JNI return code [-6][JNI call failed: Invalid arguments.]
Przyczyna: Nie można utworzyć maszyny wirtualnej Java (JVM), ponieważ ustawiono niektóre niedozwolone (globalne) argumenty.
Zalecenie: zaloguj się do maszyny, która hostuje każdy węzeł własnego środowiska IR. Sprawdź, czy zmienna systemowa jest poprawnie ustawiona w następujący sposób:
_JAVA_OPTIONS "-Xms256m -Xmx16g" with memory bigger than 8 G
. Uruchom ponownie wszystkie węzły środowiska IR, a następnie uruchom ponownie potok.
Przepełnienie arytmetyczne
Objawy: Podczas kopiowania plików Parquet wystąpił komunikat o błędzie:
Message = Arithmetic Overflow., Source = Microsoft.DataTransfer.Common
Przyczyna: Obecnie tylko liczba dziesiętna dokładności <= 38 i długość części <całkowitej = 20 są obsługiwane podczas kopiowania plików z oracle do Parquet.
Rozwiązanie: jako obejście problemu można przekonwertować wszystkie kolumny z tym problemem na VARCHAR2.
Brak stałej wyliczenia
Objawy: Wystąpił komunikat o błędzie podczas kopiowania danych do formatu Parquet:
java.lang.IllegalArgumentException:field ended by ';'
lub:java.lang.IllegalArgumentException:No enum constant org.apache.parquet.schema.OriginalType.test
.Przyczyna:
Problem może być spowodowany przez białe spacje lub nieobsługiwane znaki specjalne (takie jak;{}()\n\t=) w nazwie kolumny, ponieważ Parquet nie obsługuje takiego formatu.
Na przykład nazwa kolumny, taka jak contoso(test), przeanalizuje typ w nawiasach kwadratowych z kodu
Tokenizer st = new Tokenizer(schemaString, " ;{}()\n\t");
. Błąd jest zgłaszany, ponieważ nie ma takiego typu "test".Aby sprawdzić obsługiwane typy, przejdź do witryny gitHub apache/parquet-mr.
Rozwiązanie:
Sprawdź dokładnie, czy:
- Nazwa kolumny ujścia ma białe spacje.
- Pierwszy wiersz z białymi spacjami jest używany jako nazwa kolumny.
- Typ OriginalType jest obsługiwany. Spróbuj unikać używania następujących znaków specjalnych:
,;{}()\n\t=
.
Kod błędu: ParquetDateTimeExceedLimit
Komunikat:
The Ticks value '%ticks;' for the datetime column must be between valid datetime ticks range -621355968000000000 and 2534022144000000000.
Przyczyna: Jeśli wartość daty/godziny to "0001-01-01 00:00:00", może to być spowodowane różnicą między kalendarzem juliana a kalendarzem gregoriańskim. Aby uzyskać więcej informacji, zapoznaj się z tematem Różnica między datami kalendarza juliana i proleptycznego gregoriańskiego kalendarza.
Rozwiązanie: Sprawdź wartość znaczników i unikaj używania wartości daty/godziny "0001-01-01 00:00:00".
Kod błędu: ParquetInvalidColumnName
Komunikat:
The column name is invalid. Column name cannot contain these character:[,;{}()\n\t=]
Przyczyna: Nazwa kolumny zawiera nieprawidłowe znaki.
Rozwiązanie: Dodaj lub zmodyfikuj mapowanie kolumn, aby nazwa kolumny ujścia została prawidłowa.
Plik utworzony przez działanie kopiowania danych wyodrębnia tabelę zawierającą kolumnę varbinary (max)
Objawy: plik Parquet utworzony przez działanie kopiowania danych wyodrębnia tabelę zawierającą kolumnę varbinary (max).
Przyczyna: Ten problem jest spowodowany przez usterkę biblioteki Parquet-mr odczytu dużej kolumny.
Rozwiązanie: spróbuj wygenerować mniejsze pliki (rozmiar < 1G) z ograniczeniem 1000 wierszy na plik.
Powiązana zawartość
Aby uzyskać pomoc dotyczącą rozwiązywania problemów, wypróbuj następujące zasoby: