I think you have to put quotes around the variable to tell give that you
are comparing against a string...

Ashish
On May 10, 2012 2:06 PM, "Saurabh S" <saurab...@live.com> wrote:

>
> I'm having a hard time passing a date as a hive environment variable.
>
> The setting is this: The table I'm querying is partitioned on a date
> column, say, local_dt. I wish to query on last two days' worth of data.
> Unfortunately there seems to be no way of getting the current date without
> either scanning the entire table on all local dates (current_timestamp())
> or writing a custom UDF. So, I'm trying to pass it as a parameter within
> shell.
>
> Here is my test_query.sql:
>
>
> select count(*)
> from myschema.mytable
> where local_dt > ${hiveconf:ref_date}
> ;
>
>
> and here is the driver shell script:
>
>
> #/bin/sh
> somedate=$(date -d '2 day ago' +"%Y-%m-%d")
> echo $somedate
> hive -hiveconf ref_date=$somedate -f test_query.sql > output.dat
>
>
> The problem is that Hive is performing subtractions in the date format.
> echo $somedate produces "2012-05-08" and "select ${hiveconf:ref_date} from
> dummytable limit 1" produces "1999".
>
> I noticed that there is an option to "set
> hive.variable.substitute=false;", but in that case, hive throws the
> following error:
> FAILED: Parse Error: line 3:7 cannot recognize input near '$' '{'
> 'hiveconf' in select clause
>
> Regards,
> Saurabh
>
> P.S. I'm using this as reference:
> http://hive.apache.org/docs/r0.9.0/language_manual/var_substitution.html
>
>

Reply via email to