問題
你在拚花讀取數據格式和寫作表當你得到δ鑲木地板列不能轉換錯誤消息。
集群運行磚運行時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”,“假”)