Las marcas de tiempo de Impala no coinciden con Hive: ¿un problema de zona horaria?
Tengo algunos datos de registro de eventos en HDFS que, en su formato sin formato, se ve así:
2015-11-05 19:36:25.764 INFO [...etc...]
Una tabla externa apunta a esta ubicación 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 el rendimiento, nos gustaría consultar esto en Impala. loslog_stage
los datos se insertan en una tabla respaldada por Hive / Impala Parquet ejecutando una consulta de Hive:INSERT INTO TABLE log SELECT * FROM log_stage
. Aquí está el DDL para la mesa de 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'
El problema: cuando se consulta en Impala, las marcas de tiempo tienen 7 horas de anticipación:
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: La zona horaria de los servidores (desde/etc/sysconfig/clock
) están configurados en "América / Denver", que actualmente está 7 horas detrás de UTC.
Parece que Impala está tomando eventos que ya están en UTC, suponiendo incorrectamente que están en el horario de América / Denver, y agregando otras 7 horas.
¿Sabes cómo sincronizar los tiempos para que la tabla Impala coincida con la tabla Hive?