Метки времени импалы не соответствуют Hive - проблема с часовым поясом?
У меня есть некоторые данные журнала событий в 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 / Impala Parquet путем выполнения запроса Hive:INSERT INTO TABLE log SELECT * FROM log_stage
, Вот 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
) все настроены на "Америка / Денвер", который в настоящее время на 7 часов отстает от UTC.
Кажется, что Импала берет события, которые уже находятся в UTC, неправильно полагая, что они находятся в Америке / Денвере, и добавляет еще 7 часов.
Знаете ли вы, как синхронизировать время, чтобы таблица Impala соответствовала таблице Hive?