Share via


對 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 &apos;;&apos;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 個資料列。

如需更多疑難排解的協助,請嘗試下列資源: