Hive之变量和属性
首先看一下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之变量和属性的更多相关文章
- Hive 变量和属性
Hive 中变量和属性命名空间 下面我们来用几个例子操作下: &hive SLF4J: Class path contains multiple SLF4J bindings.SLF4J: F ...
- Hive中变量的使用
1.Hive配置属性 (1)命令行方式 Hive配置属性存储于 hiveconf 命名空间中,该命名空间中的属性是可读写的.在查询语句中插入 '${hiveconf:变量名}',就可以通过 hive ...
- runtime第二部分成员变量和属性
接上一篇 http://www.cnblogs.com/ddavidXu/p/5912306.html 转载来源http://www.jianshu.com/p/6b905584f536 http:/ ...
- iOS 成员变量,实例变量,属性变量的区别,联系
在ios第一版中: 我们为输出口同时声明了属性和底层实例变量,那时,属性是oc语言的一个新的机制,并且要求你必须声明与之对应的实例变量,例如: 注意:(这个是以前的用法) @interface MyV ...
- Objective-C Runtime 运行时之二:成员变量与属性
类型编码(Type Encoding) 作为对Runtime的补充,编译器将每个方法的返回值和参数类型编码为一个字符串,并将其与方法的selector关联在一起.这种编码方案在其它情况下也是非常有用的 ...
- Objective-C Runtime 运行时之二:成员变量与属性(转载)
在前面一篇文章中,我们介绍了Runtime中与类和对象相关的内容,从这章开始,我们将讨论类实现细节相关的内容,主要包括类中成员变量,属性,方法,协议与分类的实现. 本章的主要内容将聚集在Runtime ...
- .NET中公共变量与属性的区别
在我们的程序中经常会出现以下的代码: 如: 成员变量 public string Name; 或者用属性 private string name ...
- UNIX环境高级编程——线程同步之条件变量以及属性
条件变量变量也是出自POSIX线程标准,另一种线程同步机制.主要用来等待某个条件的发生.可以用来同步同一进程中的各个线程.当然如果一个条件变量存放在多个进程共享的某个内存区中,那么还可以通过条件变量来 ...
- OC基础成员变量、属性变量、实例方法与类方法
首先,为什么我们要定义一个新类呢?按照我的理解,就是为了抽象出来一个新的东西(也就是类),用来存储更多的数据变量和方法,一切类都直接或间接继承与NSObject. 在类的头文件里我们可以定义成员变量. ...
随机推荐
- 基于Docker的redis集群搭建
Redis集群官方介绍:http://www.redis.cn/topics/cluster-tutorial.html 基于Docker搭建Redis集群 环境:6个节点,三主三从 制作Redis镜 ...
- Spring-boot初始化创建(一)
Spring Boot 是什么 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人 ...
- 【Unity】ShareSDK、SMSSDK的基本使用与常见问题
概要 测试使用ShareSDK的一些常用功能.包括: 用微博帐号做第三方登录 获取用户的帐号详细信息 获取好友列表 分享功能 测试使用SMSSDK插件,包括: 导入插件,解决包冲突 短信登录功能:发验 ...
- Excel中substitute替换函数的使用方法
问题现象:在Excel中,对几千条数据按照时间顺序排序,但总是有部分数据不参与排序,单纯用单元格调整不起任何作用. 解决办法: 数据排列问题最重要的是数据格式的一致性.解决这个问题,建议按如下步骤: ...
- Mac 抓包工具wireshark使用
共四部分 1.wireshark简介 2.wireshark mac版安装 3.wireshark 抓取普通http 4.高级应用 1.wireshark 简介(百度百科) Wireshark(前称E ...
- Halcon例程detect_indent_fft学习
************************************************************************************************ *** ...
- Java知多少(6)第一个程序示例
跟随世界潮流,第一个Java程序输出“Hell World!”. 通过Eclipse运行程序 启动Eclipse,在菜单中选择“文件 --> 新建 --> Java项目”,弹出对话框: 图 ...
- Java知多少(97)绘图模式概述
绘图模式是指后绘制的图形与早先绘制的图形有重叠时,如何确定重叠部分的颜色.例如,后绘制的覆盖早先绘制的:或者后绘制与早先绘制的两种颜色按某种规则混合.主要有正常模式和异或模式两种:正常模式是后绘制的图 ...
- rqalpha环境搭建(windows版)
windows环境: win7 64bit rqalpha版本3.0.9 参考文档:http://rqalpha.readthedocs.io/zh_CN/latest/intro/install.h ...
- (个人)Zookeeper集群环境部署
一.准备工作 1. 下载zookeeper,下载地址:https://zookeeper.apache.org/releases.html#download 2. 下载CentOS7的镜像,下载地址 ...