Os carimbos de hora da Impala não correspondem ao Hive - um problema de fuso horário?
Eu tenho alguns dados do log de eventos no HDFS que, em seu formato bruto, são assim:
2015-11-05 19:36:25.764 INFO [...etc...]
Uma tabela externa aponta para este local do 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'
Para desempenho, gostaríamos de consultar isso no Impala. olog_stage
os dados são inseridos em uma tabela apoiada pelo Hive / Impala Parquet executando uma consulta do Hive:INSERT INTO TABLE log SELECT * FROM log_stage
. Aqui está o DDL da mesa Parquet:
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'
O problema: quando consultados no Impala, os registros de data e hora são 7 horas à frente:
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
Nota: O fuso horário dos servidores (de/etc/sysconfig/clock
) estão todos definidos como "America / Denver", que atualmente está 7 horas atrás do UTC.
Parece que o Impala está pegando eventos que já estão no UTC, assumindo incorretamente que estão no horário da América / Denver e adicionando mais 7 horas.
Você sabe como sincronizar os horários para que a tabela Impala corresponda à tabela do Hive?