Hive does not calculate variables, it substitutes them as is, in your case it will be exactly this string 'date +%Y-%m-%d
'. Also it is not possible to use UDF like current_date()
in place of table name in DDL.
The solution is to calculate variable in the shell and pass it to Hive:
In the shell
dates=$(date +%Y_%m_%d);
hive --hivevar date="$dates" -f myscript.hql
In the script:
use mydb; create table if not exists tab_${hivevar:date} (id int);
Or you can execute hive script from command line using hive -e
, in this case variable can be substituted using shell:
dates=$(date +%Y_%m_%d);
hive -e "use mydb; create table if not exists tab_${dates} (id int);"
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…