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

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 &apos;;&apos;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 koduTokenizer 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.

Aby uzyskać pomoc dotyczącą rozwiązywania problemów, wypróbuj następujące zasoby: