Support Questions
Find answers, ask questions, and share your expertise

Beeline CLI parameters (hivevar) not evaluating

Hello,

I've been struggling with parameters in command line. Parameters work in interactive shell but I cannot figure out what is wrong.

This is the code I'm running. Output should be 9911221199, but only 99 is displayed.

[hive@bitest ~]$ beeline -u jdbc:hive2:// --hivevar rdate=112211 -e "select 9${hivevar:rdate}9"
Connecting to jdbc:hive2://
Connected to: Apache Hive (version 1.2.1000.2.5.0.0-1245)
Driver: Hive JDBC (version 1.2.1000.2.5.0.0-1245)
Transaction isolation: TRANSACTION_REPEATABLE_READ
OK
+------+--+
| _c0  |
+------+--+
| 99   |
+------+--+
1 row selected (3.818 seconds)
Beeline version 1.2.1000.2.5.0.0-1245 by Apache Hive
Closing: 0: jdbc:hive2://


6 REPLIES 6

Re: Beeline CLI parameters (hivevar) not evaluating

beeline -u jdbc:hive2:// --hivevar rdate=112211 -e "set rdate"

Returns rdate is underfined, but

hive --hivevar rdate=112211 -e "set rdate"

returns:

Logging initialized using configuration in file:/etc/hive/2.5.0.0-1245/0/hive-log4j.properties
rdate=112211

However, using the variable in hive still does not evaluate:

hive --hivevar rdate=112211 -e "select 9${hivevar:rdate}9"
Logging initialized using configuration in file:/etc/hive/2.5.0.0-1245/0/hive-log4j.properties
OK
99
Time taken: 3.178 seconds, Fetched: 1 row(s)

Re: Beeline CLI parameters (hivevar) not evaluating

New Contributor

To clarify for others, I believe the reason the following doesn't work is that it was executed in a bash shell, i.e. using a typical terminal.

hive --hivevar rdate=112211 -e "select 9${hivevar:rdate}9"

 In double quoted strings, the '$' tells bash to treat  "{hivevar:rdate}" as a variable but it isn't defined so it returns an empty string before being passed in to hive due to the -e flag. i.e. "9${hivevar:rdate}9" is evaulated to "99" even before passing it into hive.

 

In contrast within single quotes there is no substitution in bash, so '9${hivevar:rdate}9' is passed into hive as is, so the following executes as the poster expected.

 

hive --hivevar rdate=112211 -e 'select 9${hivevar:rdate}9'

 

Re: Beeline CLI parameters (hivevar) not evaluating

Managed to get hive to substitute the variable, but not beeline;

hive --hivevar rdate=112211 -e 'select 9${hivevar:rdate}9'
Logging initialized using configuration in file:/etc/hive/2.5.0.0-1245/0/hive-log4j.properties
OK
91122119
Time taken: 3.76 seconds, Fetched: 1 row(s)

Re: Beeline CLI parameters (hivevar) not evaluating

Super Guru
@Stevens Yeung

Can you please try the following:

beeline -u jdbc:hive2:// --hivevar rdate=112211 -e "select 9${hivevar:rdate}9"

Re: Beeline CLI parameters (hivevar) not evaluating

Thanks @mqureshi, however it gives me the same thing;

beeline -u jdbc:hive2:// --hivevar rdate=112211 -e "select 9${hivevar:rdate}9"
Connecting to jdbc:hive2://
Connected to: Apache Hive (version 1.2.1000.2.5.0.0-1245)
Driver: Hive JDBC (version 1.2.1000.2.5.0.0-1245)
Transaction isolation: TRANSACTION_REPEATABLE_READ
OK
+------+--+
| _c0  |
+------+--+
| 99   |
+------+--+
1 row selected (4.268 seconds)
Beeline version 1.2.1000.2.5.0.0-1245 by Apache Hive
Closing: 0: jdbc:hive2://

I'm on HDP 2.5 btw. Test server, 1 node.

Re: Beeline CLI parameters (hivevar) not evaluating

Made it to work. Had to use the full database path, i.e.

Doesnt work: -u jdbc:hive2://

Works: -u jdbc:hive2://localhost:10000