【发布时间】:2016-06-05 09:53:25
【问题描述】:
我尝试使用 SparkSQL (HiveContext) 进行一些 ETL,但我注意到时间戳存在一些不一致。
假设我们有一个存储为 parquet 的表,其中包含两列:时间戳、事件。 如果我使用 Hue 中的 Hive 编辑器查询此表,则一切正常。
SELECT * FROM mytable ORDER BY timestamp
使用 hiveContext.sql(query) 执行完全相同的查询将得到与 Hue 相同的结果,但具有(时间戳 - 4 小时)。
另一个例子,假设我们有这张表:
Timestamp | event
--------------------------------------------------
'year-month-day 00:00:00' | "evt0"
'year-month-day 01:00:00' | "evt1"
'year-month-day 02:00:00' | "evt2"
'year-month-day 03:00:00' | "evt3"
'year-month-day 04:00:00' | "evt4"
'year-month-day 05:00:00' | "evt5"
'year-month-day 06:00:00' | "evt6"
'year-month-day 07:00:00' | "evt7"
'year-month-day 08:00:00' | "evt8"
我们使用 Spark 和 HiveContext 运行以下查询:
SELECT * FROM mytable
WHERE timestamp BETWEEN 'year-month-day 00:00:00' AND 'year-month-day 08:00:00'
ORDER BY timestamp
结果:
Timestamp | event
--------------------------------------------------
'year-month-day 00:00:00' | "evt4"
'year-month-day 01:00:00' | "evt5"
'year-month-day 02:00:00' | "evt6"
'year-month-day 03:00:00' | "evt7"
'year-month-day 04:00:00' | "evt8"
【问题讨论】:
-
检查所有相关机器的日期时间。它们都应该是同步的。也要注意时区。
标签: apache-spark hive timestamp hiveql