what hadoop hive amazon-emr

hadoop - what - hive reference



¿Tiene Hive algo equivalente a DUAL? (6)

Hay una buena solución de trabajo (bueno, solución alternativa) disponible en el enlace, pero es lento como se puede imaginar.

La idea es que cree una tabla con un campo ficticio, cree un archivo de texto cuyo contenido sea solo ''X'', cargue ese texto en esa tabla. Viola.

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;

Me gustaría hacer declaraciones como

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

¿Tiene Hive (corriendo en Amazon EMR) algo similar?


Hive admite esta función ahora y también admite muchas otras funciones de fechas.

Puede ejecutar la consulta como se muestra a continuación en la sección, que agregará días a la fecha provista en el primer argumento.

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

Funciones de fecha de la colmena


La mejor solución es no mencionar el nombre de la tabla.

select 1+1;

Da el resultado 2. ¡Pero la pobre Hive necesita generar un mapa reducido para encontrar esto!


Para crear una tabla dual en Hive, donde hay una columna y una fila, puede hacer lo siguiente:

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

Probar una expresión:

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

Salida:

["3","2","1"]


Solución rápida:

Podemos usar la tabla existente para lograr una funcionalidad dual siguiendo la consulta.

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

Por ejemplo:

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

Result

"límite 1" en la consulta se usa para evitar múltiples apariciones de valores especificados (kbdjj56454, null).