Impala 正在把时间转换成格林尼治标准时间,如何避免这种情况

ntjbwcob  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(327)

我在Hive里把一个日期标记成时间戳 from_unixtime(unix_timestamp(), 'yyyy-MM-dd HH:mm:ss') as timestamp) as column_name, 当我通过 Impala 查询它时,时间是以gmt格式显示的。不仅是我创建的列,每个时间戳字段都转换为gmt格式。
如何让它按原样显示时间?或者我怎样才能把它转换成est?
请帮助使用sql查询或spark/scala代码,我尝试过如何将一个日期字符串从utc转换到hive中的特定时区?它帮不了我。

brc7rcf0

brc7rcf01#

将时间转换为utc+00:00的不是 Impala ,而是Hive,而只是在将时间戳保存到Parquet地板时。这是 hive 里的虫子: hive -12767。从Parquet文件读取时间戳时,hive会进行反向调整以获得正确的值,但impala不会。
根据impala文档中的时间戳数据类型页, -convert_legacy_hive_parquet_utc_timestamps=true 使 Impala 做同样的反向调整Hive做,但使用它有一个性能开销。
如果您用impala写时间戳并用hive读回它们,hive会注意到数据是由impala写的,因此它不需要调整,因此由impala写的时间戳会正确地显示在hive中。

nnvyjq4y

nnvyjq4y2#

你试过这个吗?

SELECT  from_utc_timestamp(from_unixtime(unix_timestamp(), 'yyyy-MM-dd HH:mm:ss'), 'GMT-4')  as column_name;

它会把你的日期转换成美国东部时间的时区。另外,如果您将读取数据而不是使用时间系统,请考虑有关Parquet日期格式的问题
Impala 的时间戳与Hive不匹配-时区问题?
雷加德斯!

相关问题