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”,“假”)
删除

信息

矢量化铺读者使本地记录级使用推过滤器过滤,提高内存位置,和缓存的利用率。如果你禁用矢量化镶花的读者,可能有一个小的性能影响。你应该只禁用它,如果你有小数类型列在你的源数据。


这篇文章有用吗?