Hive是否有与DUAL相同的东西?

时间:2012-03-20 22:00:13

标签: hadoop hive amazon-emr

我想运行像

这样的陈述

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

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

6 个答案:

答案 0 :(得分:22)

最佳解决方案更不用说表名了。

select 1+1;

给出结果2.但是可怜的Hive需要产生map reduce才能找到它!

答案 1 :(得分:10)

答案 2 :(得分:5)

链接中有一个很好的working solution(好的,解决方法),但是你可能想象它很慢。

这个想法是你创建一个带有虚拟字段的表,创建一个内容只是' 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;

答案 3 :(得分:5)

要在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"]

答案 4 :(得分: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

Result

查询中的

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

答案 5 :(得分:0)

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

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

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

Hive Date Functions