有时候需要向hive脚本中传入参数,以便可以重用脚本;
向脚本中传入参数主要由两种情况:
1、通常是通过shell脚本调度hive脚本的, hive提供了可以直接读取系统变量和环境变量的方法;
hive脚本如下所示
#test.sql
use pxh;
select
'${env:month}' as month
from pxh.dual;
启动脚本如下:
#start.sh
#!/bin/sh
#ecoding=utf-8
set -x
export month=`date -d 'last month' +%Y-%m`
hive -f test.sql
运行结果:
2、在运行hive命令时传入参数,使用-hivevar 和 -hiveconf 两种参数选项,来给此次的执行脚本传入参数
hive脚本如下:
#test.sql
use pxh;
select
'${hiveconf:month}' as month
from pxh.dual;
启动脚本如下:
#start.sh
#!/bin/sh
#ecoding=utf-8
set -x
month=`date -d 'last month' +%Y-%m`
hive -hiveconf month=$month -f test.sql
#hive -hivevar month=$month -f test.sql
运行结果:
注意事项:hive脚本中的变量没用单引号时,当传入的参数是个时间变量时,出现意外的结果,
如传入时间”2016-06” 输出结果为”2010”,当用系统变量system时,也没有获得想要的结果;