Hadoop SQL需要一个表名来获取时间。怎么拿到桌子?

问题描述 投票:0回答:1

某些Hive衍生产品(例如Hadoop)需要SQL查询的表名来获取当前时间:

    SELECT UNIX_TIMESTAMP() FROM ANYTABLE

表名既无关紧要又多余,但是是必需的(其他Hive方言不允许使用FROM子句,有些则不关心是否存在FROM子句)。

如果没有包含FROM子句,我从Cloudera Hadoop收到的错误:[Cloudera] [Hardy](80)在execurint查询时,服务器中抛出语法或语义分析错误。来自服务器的错误消息:处理语句时出错:FAILED:ParseException行1:23不匹配输入''期望FROM near')'in from子句

如果有任何表格,可以从“SHOW TABLES”获得。但这需要另一个查询,我试图避免。

是否有可用于此的通用/系统表名称?或者在没有已知表名的情况下查询时间的另一种方法?

(我发现需要FROM子句的Hive实现是Cloudera Hadoop和Horton。如果使用FROM子句,Presto和Athena会出错。我检查过的其他Hive实现并不关心是否存在FROM子句。)

sql hadoop hive cloudera
1个回答
0
投票

Hortonworks Hive允许您在没有FROM条款的情况下进行选择。

 0: jdbc:hive2://localhost> SELECT UNIX_TIMESTAMP();
+-------------+--+
|     _c0     |
+-------------+--+
| 1555423112  |
+-------------+--+
1 row selected (0.204 seconds)

0: jdbc:hive2://localhost> SELECT'foo bar';
+----------+--+
|   _c0    |
+----------+--+
| foo bar  |
+----------+--+
1 row selected (0.855 seconds)

如果在尝试选择时间戳时仍然出现错误,请发布错误和Hive版本。

© www.soinside.com 2019 - 2024. All rights reserved.