遇到一个奇怪的问题,在将时间戳从PST转换为GMT时,to_utc_timestamp函数返回空白。我可以看到,这种情况仅在美国关闭夏令时的一天中才会发生。

Query: select to_utc_timestamp(cast('2017-11-05 01:00:00' as timestamp),'PST')

Query: select to_utc_timestamp(cast('2017-11-05 01:59:59' as timestamp),'PST')

以上查询返回空白输出。

但是,相同的情况在 hive 中也可以正常工作:
Query: select to_utc_timestamp(cast('2017-11-05 01:00:00' as timestamp),'PST')
OK
2017-11-05 09:00:00
Query: select to_utc_timestamp(cast('2017-11-05 01:59:59' as timestamp),'PST')
OK
2017-11-05 09:59:59

需要帮助来了解相同的原因,以及如何使用Impala查询本身解决此问题。

Impala版本-CDH 5.10上的v2.7.0

Hive版本-CDH 5.10上的1.1.0

最佳答案

我使用的是与您相同的Impala和CDH版本,并且存在相同的错误。但是,此解决方法将在Impala中获得正确的答案:

select case
    when
        cast('2017-11-05 01:00:00' as timestamp) >= '2017-11-05 01:00:00' and
        cast('2017-11-05 01:00:00' as timestamp) <= '2017-11-05 01:59:59'
    then
        hours_sub(to_utc_timestamp(hours_add('2017-11-05 01:00:00', 1), 'PST'), 1)
    else
        to_utc_timestamp(cast('2017-11-05 01:00:00' as timestamp), 'PST') end;

关于hadoop - 在夏令时切换期间,Impala将输入时间转换为空,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47200222/

10-16 01:21