文档首页/ MapReduce服务 MRS/ 组件操作指南(LTS版)/ 使用Spark/Spark2x/ Spark故障排除/ 建表语句分区列为timestamp时,使用非标准格式的时间指定分区查询表统计失败
更新时间:2024-07-24 GMT+08:00

建表语句分区列为timestamp时,使用非标准格式的时间指定分区查询表统计失败

问题

建表语句分区列为timestamp时,使用非标准格式的时间指定分区查询表统计失败以及show partitions table结果编码不对。

执行desc formatted test_hive_orc_snappy_internal_table partition(a='2016-8-1 11:45:5'); 查询报错,如下所示:

回答

spark.sql.hive.convertInsertingPartitionedTable开关控制了Hive和Datasource表的插入写操作逻辑,使用Hive表时逻辑不会自动格式化时间戳,使用Datasource表时会自动格式化时间戳。

如果写入的分区字段是a='2016-8-1 11:45:5'会自动格式化成a='2016-08-01 11:45:05',此时查询使用a='2016-8-1 11:45:5'会报错。

正确查询方式如下:

spark.sql.hive.convertInsertingPartitionedTable=true时使用datasource表逻辑,使用如下方式即可以正常查询:

desc formatted test_hive_orc_snappy_internal_table partition(a='2016-08-01 11:45:05');