我在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中的特定时区?它帮不了我。
2条答案
按热度按时间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中。
nnvyjq4y2#
你试过这个吗?
它会把你的日期转换成美国东部时间的时区。另外,如果您将读取数据而不是使用时间系统,请考虑有关Parquet日期格式的问题
Impala 的时间戳与Hive不匹配-时区问题?
雷加德斯!