首先看一下hive cli工具对于变量的定义规定的几项功能:

$ bin/hive -h

usage: hive

-d,--define <key=value>          Variable subsitution to apply to hive

commands. e.g. -d A=B or --define A=B

--database <databasename>     Specify the database to use

-e <quoted-query-string>         SQL from command line

-f <filename>                    SQL from files

-H,--help                        Print help information

-h <hostname>                    connecting to Hive Server on remote host

--hiveconf <property=value>   Use value for given property

--hivevar <key=value>         Variable subsitution to apply to hive

commands. e.g. --hivevar A=B

-i <filename>                    Initialization SQL file

-p <port>                        connecting to Hive Server on port number

-S,--silent                      Silent mode in interactive shell

-v,--verbose                     Verbose mode (echo executed SQL to the

console)

从上面输出可以看到,其中选项(-d,--define <key=value>),(--hiveconf <property=value>),(--hivevar <key=value>)都用于指定hive变量和属性。在cli中我们可以通过set命令修改或显示变量内容。

使用(-d,--define <key=value>)和(--hivevar <key=value>)是等价的,这两个属性都可以在cli定义用户自定义变量,并且将变量放置在hivevar命令空间内,这样和其他3种系统内置命令空间进行区分。

Hive中的变量和属性相关命令空间:

例1:

$ bin/hive --define foo=bar

hive (default)> set foo;

foo=bar

hive (default)> set hivevar:foo;

hivevar:foo=bar

hive (default)> set hivevar:foo=bar1;

hive (default)> set foo;

foo=bar1

hive (default)> set hivevar:foo;

hivevar:foo=bar1

hive (default)> set foo=bar2;

hive (default)> set foo;

foo=bar2

hive (default)> set hivevar:foo;

hivevar:foo=bar1

例2:

$ bin/hive --hivevar foo=bar

hive (default)> set foo;

foo=bar

hive (default)> set hivevar:foo;

hivevar:foo=bar

hive (default)> set hivevar:foo=bar1;

hive (default)> set foo;

foo=bar1

hive (default)> set hivevar:foo;

hivevar:foo=bar1

hive (default)> set foo=bar2;

hive (default)> set foo;

foo=bar2

hive (default)> set hivevar:foo;

hivevar:foo=bar1

通过以上两个例子可以发现,--define和--hivevar结果是等价的。

例3:--hiveconf在hive启动cli时指定参数值

$ bin/hive --hiveconf hive.cli.print.current.db=false

hive> set hive.cli.print.current.db;

hive.cli.print.current.db=false

hive> set hiveconf:hive.cli.print.current.db;

hiveconf:hive.cli.print.current.db=false

hive> set hiveconf:hive.cli.print.current.db=true;

hive (default)> set hive.cli.print.current.db=false;

hive> set hiveconf:hive.cli.print.current.db;

hiveconf:hive.cli.print.current.db=false

hive> set hive.cli.print.current.db;

hive.cli.print.current.db=false

注意:system和env变量前的system:和env:不能省略。

修改hive参数的方法:

方法一:

在Hive中,所有的默认配置都在${HIVE_HOME}/conf/hive-default.xml文件中,如果需要对默认的配置进行修改,可以创建一个hive-site.xml文件,放在${HIVE_HOME}/conf目录下。里面可以对一些配置进行个性化设定。Hive也会读入Hadoop的配置,因为Hive是作为Hadoop的客户端启动的,Hive的配置会覆盖Hadoop的配置。在hive-site.xml的格式如下:

1

<configuration>

2

<property>

3

<name>hive.metastore.warehouse.dir</name>

4

<value>/user/hive/warehouse</value>

5

<description>location of

6

default database for the warehouse</description>

7

</property>

8

</configuration>

方法二:

在启动Hive cli的时候进行配置,可以在命令行添加-hiveconf param=value来设定参数,例如:

1

$ hive --hiveconf mapreduce.job.queuename=queue1

这样在Hive中所有MapReduce作业都提交到队列queue1中。这一设定对本次启动的会话有效,下次启动需要重新配置。

方法三:

在已经进入cli时进行参数声明,可以在HQL中使用SET关键字设定参数,例如:

1

hive> set mapreduce.job.queuename=queue1;

这样也能达到方法二的效果。这种配置也是对本次启动的会话有效,下次启动需要重新配置。

上述三种设定方式的优先级依次递增。即参数声明覆盖命令行参数,命令行参数覆盖配置文件设定。

Hive之变量和属性的更多相关文章

  1. Hive 变量和属性

    Hive 中变量和属性命名空间 下面我们来用几个例子操作下: &hive SLF4J: Class path contains multiple SLF4J bindings.SLF4J: F ...

  2. Hive中变量的使用

    1.Hive配置属性 (1)命令行方式 Hive配置属性存储于 hiveconf 命名空间中,该命名空间中的属性是可读写的.在查询语句中插入 '${hiveconf:变量名}',就可以通过 hive ...

  3. runtime第二部分成员变量和属性

    接上一篇 http://www.cnblogs.com/ddavidXu/p/5912306.html 转载来源http://www.jianshu.com/p/6b905584f536 http:/ ...

  4. iOS 成员变量,实例变量,属性变量的区别,联系

    在ios第一版中: 我们为输出口同时声明了属性和底层实例变量,那时,属性是oc语言的一个新的机制,并且要求你必须声明与之对应的实例变量,例如: 注意:(这个是以前的用法) @interface MyV ...

  5. Objective-C Runtime 运行时之二:成员变量与属性

    类型编码(Type Encoding) 作为对Runtime的补充,编译器将每个方法的返回值和参数类型编码为一个字符串,并将其与方法的selector关联在一起.这种编码方案在其它情况下也是非常有用的 ...

  6. Objective-C Runtime 运行时之二:成员变量与属性(转载)

    在前面一篇文章中,我们介绍了Runtime中与类和对象相关的内容,从这章开始,我们将讨论类实现细节相关的内容,主要包括类中成员变量,属性,方法,协议与分类的实现. 本章的主要内容将聚集在Runtime ...

  7. .NET中公共变量与属性的区别

    在我们的程序中经常会出现以下的代码:  如:     成员变量     public   string   Name;     或者用属性     private   string   name    ...

  8. UNIX环境高级编程——线程同步之条件变量以及属性

    条件变量变量也是出自POSIX线程标准,另一种线程同步机制.主要用来等待某个条件的发生.可以用来同步同一进程中的各个线程.当然如果一个条件变量存放在多个进程共享的某个内存区中,那么还可以通过条件变量来 ...

  9. OC基础成员变量、属性变量、实例方法与类方法

    首先,为什么我们要定义一个新类呢?按照我的理解,就是为了抽象出来一个新的东西(也就是类),用来存储更多的数据变量和方法,一切类都直接或间接继承与NSObject. 在类的头文件里我们可以定义成员变量. ...

随机推荐

  1. Effective Java 第三版——46. 优先考虑流中无副作用的函数

    Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...

  2. 有关volatile关键字和transient关键字

    (1)volatile关键字['vɑlətl]的作用 让变量每次在使用的时候,都从主存中取,而不是从各个线程的“工作内存”. 也就是说,volatile变量对于每次使用,线程都能得到当前volatil ...

  3. 第三部分:Android 应用程序接口指南---第二节:UI---第十章 拖放

    第10章 拖放 使用Android的拖放框架,允许用户通过一个图形化的拖放动作,把数据从当前布局中的一个视图上转移到另一个视图上.这个框架包含了一个拖动事件类,拖动监听器和一些辅助的方法和类. 虽然这 ...

  4. python工具 - 批量文件重命名

    日常工作中经常会遇到这样的情况,需要将某个文件夹下的文件按着一定的规则进行重命名,当文件数量及其庞大的时候手工一个一个的去修需要耗费大量的时间,以下python工具可以协助批量修改文件名. 场景:某文 ...

  5. rtrim() 函数 从字符串的末端开始删除空白字符!

    例子 在本例中,我们将使用 rtrim() 函数从字符串右端删除字符: <?php $str = "Hello World!\n\n"; echo $str; echo rt ...

  6. 【九天教您南方cass 9.1】 07 绘制与标注圆曲线和细部点的方法

    同学们大家好,欢迎收看由老王测量上班记出品的cass9.1视频课程 我是本节课主讲老师九天. 我们讲课的教程附件也是共享的,请注意索取测量空间中. [点击索取cass教程]5元立得 (给客服说暗号:“ ...

  7. 【6集iCore3_ADP触摸屏驱动讲解视频】6-5 底层驱动之SDRAM读写(下)

    源视频包下载地址: 链接:http://pan.baidu.com/s/1jIC2LKy 密码:zyn3   银杏科技优酷视频发布区: http://i.youku.com/gingko8  

  8. [Laravel] 07 - Project: functions in Controller

    故事背景 一.项目预览 From: https://www.imooc.com/video/12521 表单操作 一.新增信息 既然是操作,自然会想到:控制器. 控制器  [1] 路由 ----> ...

  9. Mac OSX安装启动 zookeeper

    安装 zookeeper支持brew安装 ➜ ~ brew info zookeeper zookeeper: stable (bottled), HEAD Centralized server fo ...

  10. Linux下常用的文件传输方式介绍与比较

    参考链接:http://mingxinglai.com/cn/2014/03/copy-file-in-linux/ 本文介绍了linux之间传输文件的几种方式,并通过具体实验测试了几种文件传输方式之 ...