您需要使用特殊的hiveconf进行变量替换。例如hive> set CURRENT_DATE='2012-09-16';hive> select * from foo where day >= '${hiveconf:CURRENT_DATE}'同样,你可以传递命令行:% hive -hiveconf CURRENT_DATE='2012-09-16' -f test.hql请注意,还有env和系统变量,因此您可以参考${env:USER}例如。要查看所有可用变量,请从命令行运行% hive -e 'set;'或者从蜂巢提示符运行hive> set;更新: 我也开始使用hivevar变量,将它们放入hql片段中我可以使用source命令从hive CLI中包含(或从命令行传递-i选项)。这里的好处是,变量可以在有或没有hivevar前缀的情况下使用,并允许类似于全局和本地使用的东西。所以,假设有一些setup.hql设置一个tablename变量:set hivevar:tablename=mytable;然后,我可以带入蜂巢:hive> source /path/to/setup.hql;并在查询中使用:hive> select * from ${tablename}要么hive> select * from ${hivevar:tablename}我还可以设置一个“本地”表名,这会影响$ {tablename}的使用,但不会影响$ {hivevar:tablename}hive> set tablename=newtable;hive> select * from ${tablename} -- uses 'newtable'VShive> select * from ${hivevar:tablename} -- still uses the original 'mytable'从CLI可能并不意味着太多,但可以在使用source的文件中使用hql ,但是在本地的其余部分中设置一些“本地”变量。