Condividi tramite


Risolvere i problemi del connettore di formato Parquet in Azure Data Factory e Azure Synapse

SI APPLICA A: Azure Data Factory Azure Synapse Analytics

Suggerimento

Provare Data Factory in Microsoft Fabric, una soluzione di analisi all-in-one per le aziende. Microsoft Fabric copre tutto, dallo spostamento dati al data science, all'analisi in tempo reale, alla business intelligence e alla creazione di report. Vedere le informazioni su come iniziare una nuova prova gratuita!

Questo articolo fornisce suggerimenti per risolvere i problemi comuni con il connettore di formato Parquet in Azure Data Factory e Azure Synapse.

Codice errore: ParquetJavaInvocationException

  • Messaggio: An error occurred when invoking java, message: %javaException;.

  • Cause e raccomandazioni: cause diverse possono causare questo errore. Controllare l'elenco di seguito per un’analisi delle possibili cause e raccomandazioni correlate.

    Analisi delle cause Elemento consigliato
    Quando il messaggio di errore contiene le stringhe "java.lang.OutOfMemory", "Spazio heap Java" e "doubleCapacity", si tratta in genere di un problema di gestione della memoria in una versione precedente di Integration Runtime. Se si usa il runtime di integrazione self-hosted e la versione è precedente alla versione 3.20.7159.1, è consigliabile eseguire l'aggiornamento alla versione più recente.
    Quando il messaggio di errore contiene la stringa "java.lang.OutOfMemory", il runtime di integrazione non dispone di risorse sufficienti per elaborare i file. Limitare le esecuzioni simultanee nel runtime di integrazione. Per il runtime di integrazione self-hosted, passare a un computer potente con memoria uguale o maggiore di 8 GB.
    Quando il messaggio di errore contiene la stringa "NullPointerReference", potrebbe trattarsi di un errore temporaneo. Ripetere l'operazione. Se il problema persiste, contattare il supporto tecnico.

Codice errore: ParquetInvalidFile

  • Messaggio: File is not a valid Parquet file.

  • Causa: si tratta di un problema di file Parquet.

  • Raccomandazione: verificare se l'input è un file Parquet valido.

Codice errore: ParquetNotSupportedType

  • Messaggio: Unsupported Parquet type. PrimitiveType: %primitiveType; OriginalType: %originalType;.

  • Causa: il formato Parquet non è supportato nelle pipeline di Azure Data Factory e Synapse.

  • Raccomandazione: controllare i dati di origine passando a Formati di file supportati e codec di compressione per attività di copia.

Codice errore: ParquetMissedDecimalPrecisionScale

  • Messaggio: Decimal Precision or Scale information is not found in schema for column: %column;.

  • Causa: la precisione del numero e la scala sono state analizzate, ma non sono state fornite informazioni di questo tipo.

  • Raccomandazione: l'origine non restituisce le informazioni corrette sulla precisione e sulla scala. Controllare la colonna del problema per le informazioni.

Codice errore: ParquetInvalidDecimalPrecisionScale

  • Messaggio: Invalid Decimal Precision or Scale. Precision: %precision; Scale: %scale;.

  • Causa: lo schema non è valido.

  • Raccomandazione: controllare la colonna del problema per la precisione e la scala.

Codice errore: ParquetColumnNotFound

  • Messaggio: Column %column; does not exist in Parquet file.

  • Causa: lo schema di origine non corrisponde allo schema sink.

  • Raccomandazione: controllare i mapping nell'attività. Assicurarsi che la colonna di origine possa essere mappata alla colonna sink corretta.

Codice errore: ParquetInvalidDataFormat

  • Messaggio: Incorrect format of %srcValue; for converting to %dstType;.

  • Causa: i dati non possono essere convertiti nel tipo specificato in mappings.source.

  • Raccomandazione: controllare i dati di origine o specificare il tipo di dati corretto per questa colonna nel mapping delle colonne dell'attività di copia. Per altre informazioni, vedere Formati di file supportati e codec di compressione dall'attività di copia.

Codice errore: ParquetDataCountNotMatchColumnCount

  • Messaggio: The data count in a row '%sourceColumnCount;' does not match the column count '%sinkColumnCount;' in given schema.

  • Causa: mancata corrispondenza tra il numero di colonne di origine e il numero di colonne sink.

  • Raccomandazione: verificare che il conteggio delle colonne di origine sia uguale al numero di colonne sink in 'mapping'.

Codice errore: ParquetDataTypeNotMatchColumnType

  • Messaggio: The data type %srcType; is not match given column type %dstType; at column '%columnIndex;'.

  • Causa: i dati dell'origine non possono essere convertiti nel tipo definito nel sink.

  • Raccomandazione: specificare un tipo corretto in mapping.sink.

Codice errore: ParquetBridgeInvalidData

  • Messaggio: %message;

  • Causa: il valore dei dati ha superato il limite.

  • Raccomandazione: ripetere l'operazione. Se il problema persiste, contattare Microsoft.

Codice errore: ParquetUnsupportedInterpretation

  • Messaggio: The given interpretation '%interpretation;' of Parquet format is not supported.

  • Causa: questo scenario non è supportato.

  • Raccomandazione: 'ParquetInterpretFor' non deve essere 'sparkSql'.

Codice errore: ParquetUnsupportFileLevelCompressionOption

  • Messaggio: File level compression is not supported for Parquet.

  • Causa: questo scenario non è supportato.

  • Raccomandazione: rimuovere 'CompressionType' nel payload.

Codice errore: UserErrorJniException

  • Messaggio: Cannot create JVM: JNI return code [-6][JNI call failed: Invalid arguments.]

  • Causa: non è possibile creare una macchina virtuale Java (JVM) perché sono impostati alcuni argomenti non validi (globali).

  • Raccomandazione: accedere al computer che ospita ogni nodo del runtime di integrazione self-hosted. Verificare che la variabile di sistema sia impostata correttamente, come indicato di seguito: _JAVA_OPTIONS "-Xms256m -Xmx16g" with memory bigger than 8 G. Riavviare tutti i nodi del runtime di integrazione e quindi rieseguire la pipeline.

Overflow aritmetico

  • Sintomi: si è verificato un messaggio di errore quando si copiano i file Parquet: Message = Arithmetic Overflow., Source = Microsoft.DataTransfer.Common

  • Causa: attualmente sono supportati solo il decimale di precisione <= 38 e la lunghezza della parte <intera = 20 quando si copiano file da Oracle a Parquet.

  • Soluzione: come soluzione alternativa, è possibile convertire qualsiasi colonna con questo problema in VARCHAR2.

Nessuna costante enumerazione

  • Sintomi: si è verificato un messaggio di errore quando si copiano i dati nel formato Parquet: java.lang.IllegalArgumentException:field ended by &apos;;&apos;o : java.lang.IllegalArgumentException:No enum constant org.apache.parquet.schema.OriginalType.test.

  • Causa:

    Il problema potrebbe essere causato da spazi vuoti o caratteri speciali non supportati (ad esempio,{}()\n\t=) nel nome della colonna, perché Parquet non supporta tale formato.

    Ad esempio, un nome di colonna, ad esempio contoso(test) analizzerà il tipo tra parentesi quadre dal codice Tokenizer st = new Tokenizer(schemaString, " ;{}()\n\t");. L'errore viene generato perché non esiste un tipo di "test" di questo tipo.

    Per controllare i tipi supportati, passare al sito apache/parquet-mr di GitHub.

  • Risoluzione:

    Verificare se:

    • Nel nome della colonna sink sono presenti spazi vuoti.
    • La prima riga con spazi vuoti viene utilizzata come nome della colonna.
    • Il tipo OriginalType è supportato. Provare a evitare di usare questi caratteri speciali: ,;{}()\n\t=.

Codice errore: ParquetDateTimeExceedLimit

  • Messaggio: The Ticks value '%ticks;' for the datetime column must be between valid datetime ticks range -621355968000000000 and 2534022144000000000.

  • Causa: se il valore datetime è '0001-01-01 00:00:00', potrebbe essere causato dalla differenza tra Calendario julian e Calendario gregoriano. Per altre informazioni, fare riferimento alla differenza tra le date del calendario gregoriano julian e proleptico.

  • Soluzione: controllare il valore tick ed evitare di usare il valore datetime '0001-01-01 00:00:00'.

Codice errore: ParquetInvalidColumnName

  • Messaggio: The column name is invalid. Column name cannot contain these character:[,;{}()\n\t=]

  • Causa: il nome della colonna contiene caratteri non validi.

  • Soluzione: aggiungere o modificare il mapping delle colonne per rendere valido il nome della colonna sink.

Il file creato dall'attività di copia dei dati estrae una tabella contenente una colonna varbinary (max)

  • Sintomi: il file Parquet creato dall'attività di copia dei dati estrae una tabella contenente una colonna varbinary (max).

  • Causa: questo problema è causato dal bug della libreria Parquet-mr per la lettura di una colonna di grandi dimensioni.

  • Soluzione: provare a generare file più piccoli (dimensioni < 1G) con una limitazione di 1000 righe per file.

Per altre informazioni sulla risoluzione dei problemi, usare le risorse seguenti: