hive (1)Cli命令
查看命令选项
# hive --help
Usage ./hive <parameters> --service serviceName <service parameters>
Service List: beeline cleardanglingscratchdir cli hbaseimport hbaseschematool help hiveburninclient hiveserver2 hplsql hwi jar lineage llap llapdump llapstatus metastore metatool orcfiledump rcfilecat schemaTool version
Parameters parsed:
--auxpath : Auxillary jars
--config : Hive configuration directory
--service : Starts specific service/component. cli is default
Parameters used:
HADOOP_HOME or HADOOP_PREFIX : Hadoop install directory
HIVE_OPT : Hive options
For help on a particular service:
./hive --service serviceName --help
Debug help: ./hive --debug --help
选项解释:
--auxpath 该选项允许用户指定一个以冒号分割的Java包(jar)。很少有到。
--config 指定配置文件目录,覆盖系统默认的配置(${HIVE_HOME}/conf)
--service 启动服务,cli是默认的服务。
比如,想要启动一个cli:
# hive --service cli 或者hive
# hive --help --service cli 查看一个服务的参数(这里的服务是cli)
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
--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
-S,--silent Silent mode in interactive shell
-v,--verbose Verbose mode (echo executed SQL to the
console)
hive服务

以上服务名字里面的hiveserver已经被改名成hiveserver2了。使用的时候换成hiveserver2.
hive中的变量和属性
使用 --define key=value 和 --hivevar key=value 都可以在命令行定义变量,这两者是等价的。
例如:
# hive --define name=yjt
查看定义的变量:以下两种方式都可以查看变量值。
hive> set hivevar:name;
hivevar:name=yjt
hive> set name;
name=yjt
那么上述的hivevar是什么呢?这是hive的命名空间,hive会将这项键值对放到hivevar这个命名空间内,当然还有其他三种内置命名空间。hiveconf、system、env。
hive命名空间

Hive变量内部是以Java字符串的方式存储的。在使用变量的时候,Hive会先使用变量值替换掉变量引用,然后才将语句提交给处理器。变量替换跟Linux变量替换是一样的。
在CLI中,可以使用set命令显示或者修改变量值。
例如:
hive> set; 显示着四种内置变量的所有值
hive> set env:HOME; 显示env内置变量的HOME值
hive> set -v; 更详细的输出,输出内容包括了Hadoop中定义的一些属性。
hive> set hive.execute.engine=tez; 或者 set hiveconf:hive.execute.engine=tez; 使用set关键字为变量重新赋值或者定义变量。
hive> set hiveconf:hive.cli.print.current.db=true; 显示当前数据库。
注意:在使用或者定义system或者env命名空间的属性值时,需要指定前缀systemc:或者env:
hive 客户端命令选项
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
--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
-S,--silent Silent mode in interactive shell
-v,--verbose Verbose mode (echo executed SQL to the
console) 解释:
-e: 在命令行执行sql,跟mysql一样。执行完就会退出客户端。
例如:
# hive -e "select * from user_info";
OK
1 dennis hu CN
2 Json Lv Jpn
3 Mike Lu USA
1 dennis hu CN
2 Json Lv Jpn
3 Mike Lu USA
Time taken: 2.775 seconds, Fetched: 6 row(s)
-S:静默模式,在输出的时候可以去掉OK,Time taken等行。
例如:# hive -S -e "select * from user_info";
1 dennis hu CN
2 Json Lv Jpn
3 Mike Lu USA
1 dennis hu CN
2 Json Lv Jpn
3 Mike Lu USA
-f:指定sql文件来自于文件而不是命令行。不能与-e同时使用。 在hive shell也可以使用source 文件名 来执行sql脚本。
-i:指定一个文件,当CLI启动的时候,在提示符出现之前会执行这个文件,默认的文件名是当前用户家目录下的.hiverc文件。可以与-e同时使用。对于需要
频繁执行的命令,比如设置属性,执行sql、增加对于Hadoop分布式内存进行自定义的hive扩展Java包等
一个.hiverc的例子:
set env:HOME;
set hiveconf:hive.cli.print.current.db=true;
注意:在hiverc文件里面,每一行后面不要忘记分号。
说明:如果想要查看hive的历史记录,在当前用户的家目录下有一个.hivehistroy文件,例如:
ls ~/.hivehistory 默认只记录100条。
hive客户端执行shell命令
想要在hive里面执行shell命令,需要在命令的前面加上!,并且以分号(;)结尾,例如:
hive (default)> !echo "I'm learning hive.";
"I'm learning hive."
注意:Hive CLI中不能使用交互式、管道等命令功能。
hive客户端使用Hadoop的dfs命令
使用Hadoop的命令时,只需要把前面的hadoop去掉即可
hive (default)> dfs -ls /;
Query returned non-zero code: 1, cause: Permission denied: Principal [name=root, type=USER] does not have following privileges for operation DFS [[ADMIN PRIVILEGE] on Object [type=COMMAND_PARAMS, name=[-ls, /]]]
恩恩。。。。这个报错,没权限。如果在hive里面开启了权限控制,很有可能会导致这个情况。把权限控制去掉,执行:
hive (default)> dfs -ls /; 这个命令等价于在shell 终端执行 hadoop dfs -ls /
Found 10 items
-rw-r--r-- 2 root supergroup 12 2019-06-18 07:17 /aa
drwxr-xr-x - root supergroup 0 2019-06-18 07:17 /aa.out
drwxr----- - root supergroup 0 2019-06-18 08:42 /data1
drwxr-xr-x - root supergroup 0 2019-06-14 08:50 /hbase
drwxr-xr-x - root supergroup 0 2019-06-17 05:45 /hive
-rw-r--r-- 2 root supergroup 39904 2019-06-18 03:07 /test
drwxr-xr-x - root supergroup 0 2019-06-19 01:51 /test.out
drwxr-xr-x - root supergroup 0 2019-06-18 01:49 /tez-0.9.0
drwx-wx-wx - root supergroup 0 2019-06-18 11:10 /tmp
drwx------ - root supergroup 0 2019-05-06 07:43 /user
使用 def --help查看支持的选项。
说明:在hive里面执行dfs命令比在shell命令行速度快,这是因为在shell命令行每次执行都需要开启一个新jvm实例,而在hive里面,会在同一个进程里面执行命令。
hive使用注释
方法一:直接在命令行使用 -- 进行注释,hive是不会解析的。
方法二:在脚本中使用 --,通过 -f执行sql的时候,也不会解析。
列如:
hive (default)> --file
hive (default)> -- 123
显示字段名称
在使用sql查询的时候,如果想要看到字段名称,如何设置?
可以通过设置hiveconf配置选项hive.cli.print.header为true,默认是关闭的
hive (default)> set hive.cli.print.header;
hive.cli.print.header=false
hive (default)> set hive.cli.print.header=true;
hive (default)> select * from user_info limit 3;
OK
user_info.user_id user_info.firstname user_info.lastname user_info.count
1 dennis hu CN
2 Json Lv Jpn
3 Mike Lu USA
Time taken: 0.114 seconds, Fetched: 3 row(s)
如果想要每次都查看字段名称,想要永久设置这个值,有两种方法:
1、在用户家目录的.hiverc文件写入上诉的开启命令。
2、在hive-site.xml配置
hive (1)Cli命令的更多相关文章
- HIve常用CLI命令
1. 清楚屏幕:Ctrl+L 或者!Clear 最后加上分号 2. 查看数据仓库中的表:show tables; 3. 查看数据仓库中内置函数:show functions: 4. 查看表结构 :de ...
- 常用hive的CLI命令
1.show tables --查看所有表 2.desc tabname --查看表信息 3.dfs -ls 目录 查看hdfs上面的文件 dfs -lsr /user 递归显示目录/user ...
- 从零自学Hadoop(18):Hive的CLI和JDBC
阅读目录 序 Hive CLI(old CLI) Beeline CLI(new CLI) JDBC Demo下载 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出 ...
- .NET CLI 命令
您可以立即使用的部分通用 .NET CLI 命令 命令 说明 dotnet new 使用 C# 语言初始化用于类库或控制台应用程序的有效项目. dotnet restore 还原在指定项目的 proj ...
- 使用 dotnet cli 命令上传 nuget 程序包
前言 前面写了一篇文章介绍了如何将自己的程序集打包成nuget package并上传到nuget.org,传送门.全部是通过网页端来进行操作的,现在介绍一种比较方便快捷的方法就是用dotnet cli ...
- GO语言之urfave/cli命令行解析
练习URL: https://blog.csdn.net/sd653159/article/details/83381786 相信只要部署过线上服务,都知道启动参数一定是必不可少的,当你在不同的网络. ...
- Jenkins CLI 命令详解
笔者在前文<通过 CLI 管理 Jenkins Server>中介绍了如何通过 SSH 或客户端命令行的方式管理 Jenkins Server,限于篇幅,前文主要的目的是介绍连接 Jenk ...
- hive 修复元数据命令 & 如何快速复制一张hive的分区表
hive 元数据修复命令 msck repair table xxx; 也可以用于分区表的快速复制 例如你需要从线上往线下导一张分区表,但是网又没有连通,你需要如何操作呢? 1.复制建表语句 2.从线 ...
- php cli命令 自定义参数传递
所有的PHP发行版,不论是编译自源代码的版本还是预创建的版本,都在默认情况下带有一个PHP可执行文件.这个可执行文件可以被用来运行命令行的PHP程序.要在你的系统上找到这个可执行文件,就要遵照下面的步 ...
随机推荐
- 浅谈对BFC的认识,以及用bfc解决浮动问题
我们在前端的学习过程中常常会遇到BFC,用BFC来解决一些margin塌陷.margin合并清理浮动流的问题 那么问题来了,我们所说的BFC到底是个什么东西呢: 什么是BFC BFC(Block Fo ...
- C++之同名覆盖、多态
一.同名覆盖引发的问题 父子间的赋值兼容--子类对象可以当作父类对象使用(兼容性) 1.子类对象可以直接赋值给父类对象 2.子类对象可以直接初始化父类对象 3.父类指针可以指向子类对象 4.父类引用可 ...
- Java中map接口 遍历map
转自:https://www.cnblogs.com/wjk921/p/4918442.html java集合框架用于存储数据,也被称为集合类 位于java.util包下 java.util包下常用接 ...
- Linux 进程IO杂项
Linux 进程IO杂项 本文结合一个 pwn 例题,在分析例题的过程中穿插介绍相关知识. 例题来源:PWNABLE.KR 网站,Toddler's Bottle 小节,习题 input. 例题内容: ...
- CPNtools 模拟工具适合分析什么样的协议
最近梳理和CPNtools和Scyther之间的性能和差别.方便后面整理使用 1.库所的托肯值是什么? 托肯值也叫作令牌, 即网络系统中的资源,托肯的数目值代表了网络赋予的资源大小.在一个活的网络系统 ...
- CentOS7编译安装httpd-2.4.41 php7.3
CentOS7编译安装httpd-2.4.41 php7.3 安装参考环境: CentOS Linux release 7.5.1804 (Core) 一.安装依赖包 httpd安装的依赖包 # yu ...
- Debug与Release版本的区别
Debug 和 Release 并没有本质的区别,他们只是VC预定义提供的两组编译选项的集合,编译器只是按照预定的选项行动.如果我们愿意,我们完全可以把Debug和Release的行为完全颠倒过来.当 ...
- vue-cli3.0 脚手架搭建项目的过程详解
1.安装vue-cli 3.0 ? 1 2 3 npm install -g @vue/cli # or yarn global add @vue/cli 安装成功后查看版本:vue -V(大写的V) ...
- 2013.6.21 - OpenNER第一天
下午去实验室继续写实验报告,跟伟杰要了一个实验报告,然后大师兄叫我,我们在走廊唠了一会儿. 大 师兄想做Open NE,他说这个会比较难,目前没有人做,因为还没有发现相关的文章,大家研究的都是指定了哪 ...
- (java)Jsoup爬虫学习--获取智联招聘(老网站)的全国java职位信息,爬取10页
Jsoup爬虫学习--获取智联招聘(老网站)的全国java职位信息,爬取10页,输出 职位名称*****公司名称*****职位月薪*****工作地点*****发布日期 import java.io.I ...