文章目录
  1. Impala读取parquet格式时间的一个坑
  2. 1. 描述
  3. 2. 解决

Impala读取parquet格式时间的一个坑

1. 描述

发现用Impala读取parquet格式表的时候,timestamp类型的字段读取的是UTC时间,并没有做本地化时间转换,即时间晚了8个小时。

一开始以为是原始插入表的数据出了问题,但是使用hive进行查询的时候,时间却是对的。结果最后发现是Impala的一个坑。
详情见 https://stackoverflow.com/questions/33556226/impala-timestamps-dont-match-hive-a-timezone-issue

问题描述:

Hive在将时间插入到Parquet格式文件的时候,存储的是UTC时间,并且hive自身去查询的时候,会将时间做本地化的转换。
但是Impala去读取的时候就傻了,直接读取的UTC时间,且什么也没有做,直接返回了结果。

2. 解决

参考 http://www.ericlin.me/2015/05/timestamp-stored-in-parquet-file-format-in-impala-showing-gmt-value/

给Impala Daemon命令行参数增加一个配置告知impala读取时间的时候做下转换,如下:

1
--convert_legacy_hive_parquet_utc_timestamps=true

最后重启所有的Impala Daemons,结束。

文章目录
  1. Impala读取parquet格式时间的一个坑
  2. 1. 描述
  3. 2. 解决