Hadoop 能否从文件加载hiveconf变量?(与HiveQL文件分开)

Hadoop 能否从文件加载hiveconf变量?(与HiveQL文件分开),hadoop,hive,config,hiveql,hive-configuration,Hadoop,Hive,Config,Hiveql,Hive Configuration,我经常有一大块HiveQL,我想用一些变量的不同设置运行多次 一个简单的例子是: set mindate='2015-01-01 00:00:00' set maxdate='2015-04-01 00:00:00' select * from my_table where the_date between ${hiveconf:mindate} and ${hiveconf:maxdate} 然后通过hive-f myfile.sql>myout.log运行 稍后,我想更改变量并重新运行。我

我经常有一大块HiveQL,我想用一些变量的不同设置运行多次

一个简单的例子是:

set mindate='2015-01-01 00:00:00'
set maxdate='2015-04-01 00:00:00'
select * from my_table where the_date between ${hiveconf:mindate} and ${hiveconf:maxdate}
然后通过
hive-f myfile.sql>myout.log运行

稍后,我想更改变量并重新运行。我还希望记录每次运行时变量的值

因此,我目前复制的HiveQL文件除了变量值之外都是相同的。然而,这显然容易出错,因为如果我需要更改实际的HiveQL,那么我必须在每个文件中更改它


理想情况下,我可以将所有设置存储在一个JSON文件(或其他文件)中,并使我的HiveQL文件完全动态。有什么方法可以做到这一点吗?

在配置文件中设置变量,并在hql脚本中加载此文件:

 source /path_to_your_config_file/config.hql; 

但是配置文件的名称是一个我想更改的变量。。。我想我可以在hql脚本中引用软链接并更改链接点的位置。您可以将所有参数存储在数据库/配置单元中,并在运行脚本之前生成一个文件。对参数进行分类,例如,所有脚本的公共参数和特定脚本的脚本名称。您可以轻松地在DB中更改参数。更改文件位置不太方便