admin

在Hive中获取当前的unix_timestamp

sql

可以使用如何在Hive SQL中选择当前日期作为帖子,以在Hive中获取当前日期unix_timestamp

但是我试过了

select unix_timestamp();

只是,

unix_timestamp();

都给出错误信息

FAILED: ParseException line 1:23 mismatched input '<EOF>' expecting FROM near ')' in from clause
FAILED: ParseException line 1:0 cannot recognize input near 'unix_timestamp' '(' ')'

分别。

如何unix_timestamp在Hive中正确使用?

更新!

https://issues.apache.org/jira/browse/HIVE-178已解决此问题。

如果您使用0.13(2014年4月21日发行)或更高版本,则可以

-- unix_timestamp() is deprecated
select current_timestamp();
select 1+1;

没有from <table>


阅读 251

收藏
2021-06-07

共1个答案

admin

由于Hive不会公开双表,因此您可能需要创建一个单行表,并将该表用于此类查询。

然后,您将能够执行查询,例如

select unix_timestamp() from hive_dual;

一种解决方法是使用带有LIMIT 1或TABLESAMPLE子句的任何现有表,但是根据表的大小,它的效率会降低。

# any_existing_table contains 10 lines
# hive_dual contains 1 line

select unix_timestamp() from any_existing_table LIMIT 1; 
# Time taken: 17.492 seconds, Fetched: 1 row(s)
select unix_timestamp() from any_existing_table TABLESAMPLE(1 ROWS);
# Time taken: 15.273 seconds, Fetched: 1 row(s)

select unix_timestamp() from hive_dual ;
# Time taken: 16.144 seconds, Fetched: 1 row(s)
select unix_timestamp() from hive_dual LIMIT 1; 
# Time taken: 14.086 seconds, Fetched: 1 row(s)
select unix_timestamp() from hive_dual TABLESAMPLE(1 ROWS);
# Time taken: 16.148 seconds, Fetched: 1 row(s)

更新

无需传递任何表名和限制语句。Hiveselect unix_timestamp()现在支持。

2021-06-07