我们最近更新了我们的预生产环境,从Spark2.3升级到Spark2.4.0。
长期以来,我们在Hive中创建了大量的表,由两个字段划分,其中一个是字符串,另一个是BigInt。
我们使用Spark2.3阅读此表时没有问题,但在升级到Spark2.4之后,每次运行SW时,我们都会得到以下日志:
log_filterBIGINT.out:
由:MetaException引起(消息:过滤只支持字符串类型的分区键),原因是:MetaException(消息:过滤只支持字符串类型的分区键),原因是:MetaException(消息:过滤仅支持字符串类型的分区键)
hadoop-cmf-hive-HIVEMETASTORE-isblcsmsttc0001.scisb.isban.corp.log.out.1:
2020-01-10 09:36:05,781错误org.apache.hadoop.hive.metastore.RetryingHMSHandler:池-5-线程-138:MetaException(消息:过滤只支持字符串类型的分区键)
2020-01-10 11:19:19,208个错误org.apache.hadoop.hive.metastore.RetryingHMSHandler:池-5-线程-187:MetaException(消息:过滤只支持字符串类型的分区键)
2020-01-10 11:19:54,780错误org.apache.hadoop.hive.metastore.RetryingHMSHandler:池-5-线程-167:MetaException(消息:过滤只支持字符串类型的分区键)
从Spark的角度来看,我们知道最好的做法是对分区列使用'STRING‘类型,但是我们需要探索一个可以轻松部署的解决方案,因为使用bigiint类型的列分区创建了大量的表。
作为第一种解决方案,我们试图在Submmit中将spark.sql.hive.manageFilesourcePartitions参数设置为false,但是在重新运行SW之后,错误停止了。
在这个社区里,有没有人经历过同样的问题?解决这个问题的办法是什么?
发布于 2020-02-04 10:49:41
spark.sql.hive.convertMetastoreOrc上面的Spark属性在2.3中禁用,在2.4中被启用。启用该属性将使Hive表转换为数据源表。我相信在这种情况下,将Hive表转换为Datasource表引起了问题。
我们可以set spark.sql.hive.convertMetastoreOrc=false并运行查询.吗?
https://stackoverflow.com/questions/60054700
复制相似问题