Apache火花工作失敗,鑲花的列不能轉換錯誤

鑲木地板列不能出現轉換錯誤當你閱讀鋪十進製數據格式和寫作差值表。

寫的shanmugavel.chandrakasu

去年發表在:2022年5月20日

問題

你在拚花讀取數據格式和寫作表當你得到δ鑲木地板列不能轉換錯誤消息。

集群運行磚運行時7.3 LTS或以上。

org.apache.spark。SparkException:任務失敗而寫的行。引起的:com.databricks.sql.io。s3 FileReadException:當閱讀文件時發生錯誤:/ / bucket名/ /倉庫/ xxx / part-xxxx-tid-c00.snappy.parquet著陸。鑲木地板列不能轉換。列(Col1):預期:DecimalType(10 0),發現:造成FIXED_LEN_BYTE_ARRAY: org.apache.spark.sql.execution.datasources.SchemaColumnConvertNotSupportedException。

導致

矢量化鑲花的讀者是解碼二進製格式的十進製類型列。

矢量化鑲花的讀者是默認啟用在鋪磚運行時7.3及以上的閱讀數據集文件。閱讀模式使用原子數據類型:二進製、布爾值、日期、字符串和時間戳。

刪除

信息

這個錯誤隻發生如果你有小數類型列的源數據。

解決方案

如果你有小數類型列在你的源數據,您應該禁用矢量化鑲花的讀者。

spark.sql.parquet.enableVectorizedReader集群的火花配置禁用集群級別的矢量化鑲花的讀者。

你也可以禁用筆記本級別的矢量化鑲花的讀者通過運行:

% scala spark.conf.set (“spark.sql.parquet.enableVectorizedReader”,“假”)
刪除

信息

矢量化鋪讀者使本地記錄級使用推過濾器過濾,提高內存位置,和緩存的利用率。如果你禁用矢量化鑲花的讀者,可能有一個小的性能影響。你應該隻禁用它,如果你有小數類型列在你的源數據。


這篇文章有用嗎?