it-swarm.com.ru

У Hive есть что-то эквивалентное DUAL?

Я хотел бы запустить такие заявления, как

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

Есть ли в Hive (на Amazon EMR) что-то похожее?

17
jbreed
10
Jeff Hammerbacher

Лучшее решение - не упоминать имя таблицы. 

select 1+1;

Дает результат 2. Но бедному Улью нужно порождать карту уменьшения, чтобы найти это!

22
Harikrishnan Ck

Чтобы создать двойную таблицу в 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"]
5
invoketheshell

Существует хорошее рабочее решение (хорошо, обходной путь), доступное по ссылке, но оно медленное, как вы можете себе представить.

Идея состоит в том, чтобы создать таблицу с фиктивным полем, создать текстовый файл с содержимым «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;
5
ciuncan

Быстрое решение:

Мы можем использовать существующую таблицу для достижения двойной функциональности, следуя запросу.

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

Результат

«Предел 1» в запросе используется, чтобы избежать многократного вхождения указанных значений (kbdjj56454, null). 

2
Balaji

Hive теперь поддерживает эту функцию, а также поддерживает многие другие функции дат.

Вы можете выполнить запрос, как показано ниже, в Hive, который добавит число дней, указанное в первом аргументе.

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

Функции Hive Date

0
Jainik