问题
您正在以Parquet格式读取数据并写入Delta表拼花柱不能转换错误消息。
集群运行的是Databricks Runtime 7.3 LTS或以上版本。
写行时任务失败。由:com. databicks .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. execute .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”,“假”)