hadoop - 如何在 Impala 中获得与 Hives from_unixtime 相同的结果?

标签 hadoop hive impala

我了解 Imapla 解释相对于 UTC 时区的时间戳。我也知道有一个设置可以更改此行为,以便 impala 解释相对于本地时区的时间戳。问题是我无法更改此设置。

有没有办法获得与我在 Impala 的 Hive 中获得的结果相同的结果?
这是 Hive 结果:

select from_unixtime(1521938294)
--> 2018-03-25 01:38:14

本地时区是 Europe/Vienna

最佳答案

好问题。但答案很棘手!我研究了一段时间,下面是我的答案。

  • 您选择的日期和时间指向维也纳发生时移的时间。即,时间提前一小时。

  • 您可以使用以下链接进行检查。

    HERE1

    HERE2
  • 在 Impala 中进行时间转换,无需根据需要使用任何标志,语法如下所示,
  • select from_utc_timestamp(cast(from_unixtime(1521938294) AS TIMESTAMP), 'Europe/Vienna');
    [OR]
    select from_utc_timestamp('2018-03-25 00:38:14', 'Europe/Vienna');
    
    2018-03-25 01:38:00   <---EXPECTED OUTPUT
    2018-03-25 02:38:00   <---ACTUAL OUTPUT IN IMPALA
    

    上面的语法可以将 Unix 时间戳转换为欧洲/维也纳时间,但是由于现实生活中发生的时间偏移与转换之间的差异,结果中的一小时差异如上所示这发生在黑斑羚。

    原因:

    现实生活中的时移 - 2019 年 3 月 25 日 01:59:59,然后是 2019 年 3 月 25 日 03:00:00

    Impala 中的时移 - 2019 年 3 月 25 日 00:59:59,然后是 2019 年 3 月 25 日 02:00:00

    尽管 Impala 中似乎存在转换问题,但我上面提供的语法对于 2018 年 3 月 25 日以外的任何日期都应该可以完美地工作。

    其他日期:
    select from_utc_timestamp('2018-03-26 00:38:14', 'Europe/Vienna')
    
    2018-03-26 02:38:14   <---ACTUAL & CORRECT OUTPUT IN IMPALA 
    

    希望能帮助到你!

    关于hadoop - 如何在 Impala 中获得与 Hives from_unixtime 相同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60229146/

    相关文章:

    Mysql - 需要 IMPALA 查询帮助

    database-design - Presto 与 Impala : architecture, 性能、功能

    hadoop - hadoop中的SUCCESS和part-r-00000文件是什么

    jdbc - 如何使用自定义 JDBC 驱动程序运行 Sqoop?

    hadoop - 如何在ReduceTask.java中获取某个 map task 输出文件的目的地

    hadoop - 从 Hue UI 执行的 Oozie 中的 Hive 操作失败

    hive - 使用 WHERE 子句查询不起作用

    python - 如何在我的Mapper和Reducer中使用此代码?我想在Google集群中运行此代码

    hive explain plan 哪里看全表扫描?

    mysql - 在Hadoop或MySQL中 reshape dcast表