Estoy tratando de ejecutar una subconsulta dentro de Hive en bash. Pero el problema es que el compilador dice que no puede reconocer la subconsulta dentro de la consulta. ¿algunas ideas?

#!/bin/bash
echo "Hello world"

#####################################################################
#This line will connect to the database and execute the query in Hive
####################################################################

var1=$(beeline --showHeader=false --outputformat=tsv2 -u "jdbc:hive2:XXXXXXXXX" <<EOF
select $2 from $3.$1 where length($2)=(select max(length($2)) from $3.$1) limit 1;
EOF
)


#####################################################################
#This will output the result of the query
####################################################################

echo "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
echo "We are currently analyzing Table:$1 and Column:$2"
echo "The value wth a maximum length for $1 is $var1"
echo "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
0
Nidhin_toms 23 nov. 2019 a las 23:23

1 respuesta

La mejor respuesta

Me temo que su consulta no funcionará en HIVE debido a la forma en que realiza la subconsulta. Tendrá que reescribir la consulta.

Pruebe el siguiente código para obtener los $ 2 que tienen la longitud máxima:

select $2 from (select max(length($2)) as length_2, $2 from $3.$1 group by $2 order by length_2 desc) a limit 1;

Además, puede ejecutar la consulta usando la opción -e, como ha mencionado @mazaneicha.

1
Tsvetelina Mariyanova 27 nov. 2019 a las 08:44