對 Azure Data Factory 與 Azure Synapse Analytics 中的 Parquet 格式連接器進行疑難排解
適用於:Azure Data Factory Azure Synapse Analytics
提示
試用 Microsoft Fabric 中的 Data Factory,這是適用於企業的全方位分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告的所有項目。 了解如何免費開始新的試用!
本文針對 Azure Data Factory 與 Azure Synapse Analytics 中的 Parquet 格式連接器常見問題,提供疑難排解建議。
錯誤碼:ParquetJavaInvocationException
訊息:
An error occurred when invoking java, message: %javaException;.
原因與建議:有不同的原因可能會導致此錯誤。 請查看下列清單,以了解可能原因的分析與相關建議。
原因分析 建議 當錯誤訊息包含 "java.lang.OutOfMemory"、"Java heap space" 和 "doubleCapacity" 字串時,通常是因為舊版整合執行階段中的記憶體管理問題。 如果您使用的是版本早於 3.20.7159.1 的自我裝載整合執行階段,建議您升級至最新版本。 當錯誤訊息包含 "java.lang.OutOfMemory" 字串時,表示整合執行階段沒有足夠的資源可處理檔案。 限制整合執行階段上的並行執行數目。 針對自我裝載整合執行階段,請擴大到記憶體等於或大於 8 GB 的強大機器。 當錯誤訊息包含 "NullPointerReference" 字串時,代表可能是暫時性錯誤。 重試作業。 若問題持續發生,請連絡支援服務。
錯誤碼:ParquetInvalidFile
訊息:
File is not a valid Parquet file.
原因:這是 Parquet 檔案問題。
建議:檢查輸入是否為有效的 Parquet 檔案。
錯誤碼:ParquetNotSupportedType
訊息:
Unsupported Parquet type. PrimitiveType: %primitiveType; OriginalType: %originalType;.
原因︰Azure Data Factory 與 Synapse Analytics 管線不支援 Parquet 格式。
建議:前往複製活動支援的檔案格式和壓縮轉碼器 (機器翻譯) 仔細檢查來源資料。
錯誤碼:ParquetMissedDecimalPrecisionScale
訊息:
Decimal Precision or Scale information is not found in schema for column: %column;.
原因:已剖析數值的有效位數和小數位數,但未提供這類資訊。
建議:來源不會傳回正確的有效位數和小數位數資訊, 請在問題資料行查看這類資訊。
錯誤碼:ParquetInvalidDecimalPrecisionScale
訊息:
Invalid Decimal Precision or Scale. Precision: %precision; Scale: %scale;.
原因:結構描述無效。
建議:在問題資料行查看有效位數和小數位數。
錯誤碼:ParquetColumnNotFound
訊息:
Column %column; does not exist in Parquet file.
原因:來源結構描述與接收器的結構描述不符。
建議:檢查活動中的對應, 確認來源資料行能對應到正確的接收器資料行。
錯誤碼:ParquetInvalidDataFormat
訊息:
Incorrect format of %srcValue; for converting to %dstType;.
原因︰無法將資料轉換成 mappings.source 中指定的類型。
建議:在複製活動資料行對應中,再次檢查來源資料,或為此資料行指定正確的資料類型。 如需詳細資訊,請參閱複製活動支援的檔案格式和壓縮轉碼器 (機器翻譯)。
錯誤碼:ParquetDataCountNotMatchColumnCount
訊息:
The data count in a row '%sourceColumnCount;' does not match the column count '%sinkColumnCount;' in given schema.
原因:來源資料行計數與接收器資料行計數不符。
建議:再次確認來源資料行計數是否與 'mapping' 中的接收器資料行計數相同。
錯誤碼:ParquetDataTypeNotMatchColumnType
訊息:
The data type %srcType; is not match given column type %dstType; at column '%columnIndex;'.
原因:來自來源的資料無法轉換成接收器中定義的類型。
建議:在 mapping.sink 中指定正確的類型。
錯誤碼:ParquetBridgeInvalidData
訊息:
%message;
原因:資料值超過限制。
建議:重試作業。 若問題持續發生,請與我們連絡。
錯誤碼:ParquetUnsupportedInterpretation
訊息:
The given interpretation '%interpretation;' of Parquet format is not supported.
原因:不支援此案例。
建議:'ParquetInterpretFor' 不應是 'sparkSql'。
錯誤碼:ParquetUnsupportFileLevelCompressionOption
訊息:
File level compression is not supported for Parquet.
原因:不支援此案例。
建議:移除承載中的 'CompressionType'。
錯誤碼:UserErrorJniException
訊息:
Cannot create JVM: JNI return code [-6][JNI call failed: Invalid arguments.]
原因:由於設定了一些不合法的 (全域) 引數,導致無法建立 JAVA 虛擬機器 (JVM)。
建議:登入裝載了自我裝載整合執行階段中每個節點的機器, 檢查確認系統變數已正確設定,如下所示:
_JAVA_OPTIONS "-Xms256m -Xmx16g" with memory bigger than 8 G
。 重新啟動所有整合執行階段節點,然後重新執行管線。
算術溢位
症狀:複製 Parquet 檔案時出現錯誤訊息:
Message = Arithmetic Overflow., Source = Microsoft.DataTransfer.Common
原因:將檔案從 Oracle 複製到 Parquet 時,目前僅支援有效位數 <= 38 且整數部分長度 <= 20 的十進位數。
解決方法:您可以將發生此問題的所有資料行轉換成 VARCHAR2。
無列舉常數
症狀:將資料複製到 Parquet 格式時出現錯誤訊息:
java.lang.IllegalArgumentException:field ended by ';'
或java.lang.IllegalArgumentException:No enum constant org.apache.parquet.schema.OriginalType.test
。原因:
會出現這個問題,可能是因為資料行名稱中含有空白字元或不支援的特殊字元 (例如 ,;{}()\n\t=),因為 Parquet 不支援這類格式。
舉例來說,contoso(test) 這個資料行名稱會剖析程式碼 (英文)
Tokenizer st = new Tokenizer(schemaString, " ;{}()\n\t");
裡位於括弧中的型別, 但因為沒有 "test" 這種型別,所以會擲回錯誤。若要查看支援的類型,請前往 GitHub apache/parquet-mr 網站 (英文)。
解決方法:
仔細檢查以下項目:
- 接收器資料行名稱中是否有空白字元。
- 包含空格的第一個資料列是否用來當做資料行名稱。
- 是否支援 OriginalType 型別。 請儘量避免使用下列特殊字元:
,;{}()\n\t=
。
錯誤碼:ParquetDateTimeExceedLimit
訊息:
The Ticks value '%ticks;' for the datetime column must be between valid datetime ticks range -621355968000000000 and 2534022144000000000.
原因:如果日期時間值是 '0001-01-01 00:00:00',可能是因儒略曆與西曆之間的差異導致錯誤發生。 如需詳細資料,請參閱儒略曆與前西曆日期之間的差異 (英文)。
解決方法:檢查刻度值,避免使用 '0001-01-01 00:00:00' 這個日期時間值。
錯誤碼:ParquetInvalidColumnName
訊息:
The column name is invalid. Column name cannot contain these character:[,;{}()\n\t=]
原因:資料行名稱含有無效字元。
解決方法:新增或修改資料行對應,使接收器資料行名稱有效。
藉由複製資料活動所建立的檔案會擷取包含 varbinary (max) 資料行的資料表
徵兆:藉由複製資料活動所建立的 Parquet 檔案會擷取包含 varbinary (max) 資料行的資料表。
原因:這個問題是由讀取大型資料行的 Parquet-mr 程式庫錯誤所造成。
解決方法:嘗試產生較小的檔案,(大小 < 1G),且每個檔案限制最多 1000 個資料列。
相關內容
如需更多疑難排解的協助,請嘗試下列資源: