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 ';'
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.
Contenuto correlato
Per altre informazioni sulla risoluzione dei problemi, usare le risorse seguenti: