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程序.要在你的系统上找到这个可执行文件,就要遵照下面的步 ...
随机推荐
- Flutter Image(图片)
Image是一个用于展示图片的组件.支持 JPEG.PNG.GIF.Animated GIF.WebP.Animated WebP.BMP 和 WBMP 等格式. Image 有许多的静态函数: ne ...
- error LNK2005: “找到一个或多个多重定义的符号” 已经在 xxxx.obj 中定义 的解决方法
1 问题还原 这里我有三个源文件:Base.hpp, Base.cpp 和 main.cpp 在Base.hpp里面定义一个基类,注意,基类只包含构造函数和析构函数的声明,函数在Base.cpp里实现 ...
- JavaPoet的基本使用
原文:https://blog.csdn.net/crazy1235/article/details/51876192 JavaPoet JavaPoet 是一个用来生成 .java源文件的Java ...
- LinuxKernel优秀博客
1.vanbreaker的专栏 2.LinuxKernel Exploration 3.DroidPhone的专栏 4.Linux内核研究以及学习文档和ARM学习以及研究的开放文档 [力荐] 5. ...
- https小结
目录: 1.什么是https 2.https实现过程描述(https和证书小结) 3.(在客户端)https抓包解密 4.wireshark分析https数据包解密前后的特点 正文 1.什么是http ...
- [daily][archlinux] pacman 安装软件时404的问题
时常,我们在archlinux上pacman安装一个软件时,会遇见如图这样的问题: “The requested URL returned error: 404” [classic_tong @ 2 ...
- Flink 使用(一)——从kafka中读取数据写入到HBASE中
1.前言 本文是在<如何计算实时热门商品>[1]一文上做的扩展,仅在功能上验证了利用Flink消费Kafka数据,把处理后的数据写入到HBase的流程,其具体性能未做调优.此外,文中并未就 ...
- Linux磁盘管理——Ext2文件系统
前言 通常而言,对于一块新磁盘我们不是直接使用,而是先分区,分区完毕后格式化,格式化后OS才能使用这个文件系统.分区可能会涉及到MBR和GPT问题.至于格式化和文件系统又有什么关系? 这里的格式化指的 ...
- k8s 证书之ca-csr.json,ca-config.json
这是后面生成的所有证书的基础. 但如果是公司内使用,使用基于这些证书生成的ca, 在保证安全性的情况下,可以更方便的部署. ca-csr.json { "CN": "ku ...
- linux系统编程之进程(四)
今天继续研究进程相关的东东,话不多说,进入正题: SIGCHLD: 关于它,之前章节的学习中已经用到了,具体可以参考博文:http://www.cnblogs.com/webor2006/p/3500 ...