问题
你在拼花读取数据格式和写作表当你得到δ镶木地板列不能转换错误消息。
集群运行砖运行时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”,“假”)