問題
您正在以Parquet格式讀取數據,並將數據寫入Delta表拚花柱不能轉換錯誤消息。
集群運行的是Databricks Runtime 7.3 LTS及以上版本。
寫行時任務失敗。原因如下:com.databricks.sql.io.FileReadException: Error while reading file s3://bucket-name/landing/edw/xxx/part-xxxx-tid-c00.snappy.parquet。拚花柱不能轉換。Column: [Col1], Expected: DecimalType(10,0), Found: FIXED_LEN_BYTE_ARRAY原因:org.apache.spark.sql.execution.datasources.SchemaColumnConvertNotSupportedException。
導致
向量化的Parquet閱讀器正在將十進製類型的列解碼為二進製格式。
Databricks Runtime 7.3及以上版本默認啟用了向量化的Parquet讀取器,用於讀取Parquet文件中的數據集。read模式使用原子數據類型:二進製、布爾值、日期、字符串和時間戳。
解決方案
如果源數據中有十進製類型的列,則應該禁用向量化的Parquet閱讀器。
集spark.sql.parquet.enableVectorizedReader來假在集群的Spark配置中禁用集群級別的向量化Parquet閱讀器。
您還可以在筆記本級別禁用向量化Parquet閱讀器,運行以下命令:
% scala spark.conf.set(“spark.sql.parquet.enableVectorizedReader”,“假”)