比较 HDFS 中的毫秒时间戳

Posted

技术标签:

【中文标题】比较 HDFS 中的毫秒时间戳【英文标题】:Comparing millisecond timestamps in HDFS 【发布时间】:2015-11-02 16:02:15 【问题描述】:

我有 2 个时间戳列存储在 HDFS 中,我可以通过 Impala、hive 等访问它们...

我需要比较的时间戳可能如下例所示:

2014-04-08 00:23:21.687000000

2014-04-08 00:23:21.620000000

以毫秒为单位,需要构建一个新列,在本例中该列的值应为 0.067000

我尝试过使用 impala 的 built in time functions,但它们似乎都没有成功。 我试过了:

    将字符串转换为时间戳,然后减去 2 个值。这将返回错误“AnalysisException:算术运算需要数字操作数” 使用 unix_timestamp 函数。这会将值截断为表示秒的 int,因此会丢失亚秒值。

【问题讨论】:

【参考方案1】:

在写这个问题的时候我找到了答案:)

做到这一点的方法是使用双重演员。

Cast(cast(time_stamp) as timestamp) as double)

这会使 times_stamp 变成一个数字,而不会截断亚秒级的值。

一旦到了那里,它就变成了一个微不足道的算术运算。

【讨论】:

以上是关于比较 HDFS 中的毫秒时间戳的主要内容,如果未能解决你的问题,请参考以下文章

BinLog 中的时间戳是不是可以达到毫秒精度?

如何删除时间戳火花sql中的毫秒数

Razor 视图中的 Epoch/Unix 时间戳(以毫秒为单位)到日期时间

将时间戳(以毫秒为单位)转换为 Java 中的字符串格式时间

如何在蜂巢中获得毫秒精度?

mysql如何用sql语句将时间戳转化为正常时间精确到毫秒