更新时间:2024-11-29 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');
父主题: Spark常见问题