Hive下的变量使用

Hive的变量前面有一个命名空间,包括三个hiveconf,system,env,还有一个hivevar


1. hiveconf的命名空间指的是hive-site.xml下面的配置变量值。
2. system的命名空间是系统的变量,包括JVM的运行环境。
3. env的命名空间,是指环境变量,包括Shell环境下的变量信息,如HADOOP_HOME之类的

 

普通的变量可以使用
         --define key=value 
或者 --hivevar key=value
来声明,这都代表是hivevar,的变量。
如:
$ hive --define key=value

简写 hive -d key=value

$ hive --hivevar key=value

添加多个变量的时候如下:

Sql代码   收藏代码
  1. $ hive --define a='a' --define b='b'  

  

对于使用hivevar,前缀是可有可无的,如:

Sql代码   收藏代码
  1. hive> create table toss1(i int, ${hivevar:foo} string);  

等价于

Sql代码   收藏代码
  1. hive> create table toss2(i2 int, ${foo} string);  

  

但是对于使用命名空间如hiveconf,system,env的,前缀则不可少

在hive下面,可以通过
set;
或者
set -v;  
来查看现有环境的所有变量的值。加上 -v参数,可以获取到HDFS和MapReduce的环境变量信息。

 

一个简单的Sample

Sql代码   收藏代码
  1. hive> set CURRENT_DATE='2012-09-16';  
  2. hive> select * from foo where day >= '${hiveconf:CURRENT_DATE}'  
  3. similarly, you could pass on command line:  

 

hive -f xxx.hql

$ hive -hiveconf CURRENT_DATE='2012-09-16' -hiveconf CURRENT_DATE='2012-09-16' -f test.hql

 

hive -hiveconf mapred.job.queue.name=queue2 -e "set mapred.job.queue.name;"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值