20

我想运行如下语句

SELECT date_add('2008-12-31', 1) FROM DUAL

Hive(在 Amazon EMR 上运行)是否有类似的东西?

4

6 回答 6

28

最好的解决方案是不提表名。

select 1+1;

给出结果 2。但是可怜的 Hive 需要生成 map reduce 才能找到这个!

于 2015-04-24T12:24:09.257 回答
11

还没有:https ://issues.apache.org/jira/browse/HIVE-1558

于 2012-03-21T15:33:25.307 回答
7

要在 hive 中创建一列一行的双重相似表,您可以执行以下操作:

create table dual (x int);
insert into table dual select count(*)+1 as x from dual;

测试一个表达式:

select split('3,2,1','\\,') as my_new_array from dual;

输出:

["3","2","1"]
于 2015-07-20T21:11:02.643 回答
5

链接中有一个很好的工作解决方案(嗯,解决方法),但它很慢,就像你想象的那样。

这个想法是您创建一个带有虚拟字段的表,创建一个内容只是“X”的文本文件,将该文本加载到该表中。中提琴。

CREATE TABLE dual (dummy STRING);

load data local inpath '/path/to/textfile/dual.txt' overwrite into table dual;

SELECT date_add('2008-12-31', 1) from dual;
于 2013-07-24T08:21:09.210 回答
2

快速解决方案:

我们可以通过以下查询使用现有表来实现双重功能。

SELECT date_add('2008-12-31', 1) FROM <Any Existing Table> LIMIT 1

例如:

SELECT CONCAT('kbdjj','56454') AS a, null AS b FROM tbl_name LIMIT 1

结果

查询中的“limit 1”用于避免多次出现指定值(kbdjj56454,null)。

于 2016-04-26T06:21:23.813 回答
2

Hive 现在确实支持此功能,并且也支持许多其他日期功能。

您可以在 hive 中运行如下查询,这将在第一个参数中添加提供的日期的天数。

SELECT DATE_ADD('2019-03-01', 5);

Hive 日期函数

于 2019-02-19T07:39:01.023 回答