sql - Hadoop SQL需要一个表名来获取时间。如何获得 table ?

标签 sql hadoop hive cloudera

一些Hive派生工具(例如Hadoop)需要一个表名才能进行SQL查询以获取当前时间:

    SELECT UNIX_TIMESTAMP() FROM ANYTABLE

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

如果未包含FROM子句,我将从Cloudera Hadoop收到错误:
[Cloudera] [Hardy](80)execurint查询时服务器中引发了语法或语义分析错误。来自服务器的错误消息:处理语句时出错:失败:ParseException行1:23输入项不匹配”期望FROM子句中的FROM靠近')'

如果可以使用任何表,则可以从“SHOW TABLES”中获得一个表。但这需要另一个查询,我正试图避免这种查询。

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

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

最佳答案

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版本。

关于sql - Hadoop SQL需要一个表名来获取时间。如何获得 table ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55699282/

相关文章:

sql - Postgres 查询 - 查找每周开始和结束之间的差异,每周

mysql - 如何将MySql查询结果存储在MyBatis中的变量中

java - 在 mapreduce 作业中对单独的行应用 wordcount

hadoop - Hive - 或条件与左外连接

hive - 显示每组最大值的配置单元表

mysql - 如果不返回最低值

sql - 将引用网址保存到数据库中

hadoop - Analytics for Apache Hadoop Service-无法加载外部文件

sql - 确定 Hive 中 avg(col) 的 MAX

hadoop - Hbase 与 Hive 的比较