可以使用如何在Hive SQL中选择当前日期作为帖子,以在Hive中获取当前日期unix_timestamp。
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>。
from <table>
由于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()现在支持。
select unix_timestamp()