Hive传递属性/文本文件以在-hiveconf中读取多个变量值

时间:2014-10-16 10:59:09

标签: hadoop hive hiveql

目前我可以使用以下命令:

hive -f hive-job.hql -hiveconf city='CA' -hiveconf country='US'

这里我只传递了2个变量值。但我有大约15到20个变量值,我需要通过 -hiveconf 传递它。这些值存储在属性/文本文件中。

是否有可能通过-hiveconf读取文件?

2 个答案:

答案 0 :(得分:1)

没有直接的方法将属性值添加到Hive变量。但是我知道有两种方法可能会有所帮助:

1。)将所有变量保存在hive-job-varibales.hql文件中

set x=1;

set y=2;
...
Then call this file in the main file i.e hive -f hive-job.hql like this:

select ... from ..
...
hive-job-varibales.hql

2.使用Java代码从属性文件中读取并将属性值转换为hive变量格式,并使用Hive JDBC连接连接到Hive Server并按所需顺序运行查询。

根据您的要求,我建议使用第二种选择。

希望它有所帮助...... !!!

答案 1 :(得分:0)

您可以非常轻松地使用shell工具执行此操作。

假设您的属性文件采用典型的“key = val”格式,例如

a=1
b=some_value
c=foo

然后你可以这样做:

sed 's/^/-hiveconf\n/g' my_properties_file | xargs hive -f hive-job.hql