gpt4 book ai didi

timezone - Impala 时间戳与 Hive 不匹配 - 时区问题?

转载 作者:行者123 更新时间:2023-12-01 07:09:49 24 4
gpt4 key购买 nike

我在 HDFS 中有一些事件日志数据,其原始格式如下所示:

2015-11-05 19:36:25.764 INFO    [...etc...]

一个外部表指向这个 HDFS 位置:
CREATE EXTERNAL TABLE `log_stage`(
`event_time` timestamp,
[...])
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'

为了性能,我们想在 Impala 中查询它。 log_stage通过执行 Hive 查询将数据插入到 Hive/Impala Parquet 支持的表中: INSERT INTO TABLE log SELECT * FROM log_stage .这是 Parquet 表的 DDL:
CREATE TABLE `log`(
`event_time` timestamp,
[...])
ROW FORMAT SERDE
'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
STORED AS INPUTFORMAT
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'

问题:在 Impala 中查询时,时间戳提前 7 小时:
Hive time:   2015-11-05 19:36:25.764
Impala time: 2015-11-06 02:36:25.764

> as.POSIXct("2015-11-06 02:36:25") - as.POSIXct("2015-11-05 19:36:25")
Time difference of 7 hours

注意:服务器的时区(来自 /etc/sysconfig/clock )都设置为“美国/丹佛”,目前比 UTC 晚 7 小时。

似乎 Impala 正在处理已经在 UTC 中的事件,错误地假设它们是在美国/丹佛时间,然后又增加了 7 个小时。

您知道如何同步时间以便 Impala 表与 Hive 表匹配吗?

最佳答案

Hive 以不同的方式将时间戳写入 Parquet。您可以使用impalad标志-convert_legacy_hive_parquet_utc_timestamps告诉 Impala 在读取时进行转换。见 TIMESTAMP documentation更多细节。

This blog post有一个问题的简要描述:

When Hive stores a timestamp value into Parquet format, it converts local time into UTC time, and when it reads data out, it converts back to local time. Impala, however on the other hand, does no conversion when reads the timestamp field out, hence, UTC time is returned instead of local time.



impalad 标志告诉 Impala 在读取 Hive 生成​​的 Parquet 中的时间戳时进行转换。它确实会产生一些小成本,因此如果这对您来说是个问题,您应该考虑使用 Impala 编写时间戳(尽管它可能很小)。

关于timezone - Impala 时间戳与 Hive 不匹配 - 时区问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33556226/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com