查看命令选项

# 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命令的更多相关文章

  1. HIve常用CLI命令

    1. 清楚屏幕:Ctrl+L 或者!Clear 最后加上分号 2. 查看数据仓库中的表:show tables; 3. 查看数据仓库中内置函数:show functions: 4. 查看表结构 :de ...

  2. 常用hive的CLI命令

    1.show tables  --查看所有表 2.desc tabname --查看表信息 3.dfs -ls 目录  查看hdfs上面的文件  dfs -lsr /user  递归显示目录/user ...

  3. 从零自学Hadoop(18):Hive的CLI和JDBC

    阅读目录 序 Hive CLI(old CLI) Beeline CLI(new CLI) JDBC Demo下载 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出 ...

  4. .NET CLI 命令

    您可以立即使用的部分通用 .NET CLI 命令 命令 说明 dotnet new 使用 C# 语言初始化用于类库或控制台应用程序的有效项目. dotnet restore 还原在指定项目的 proj ...

  5. 使用 dotnet cli 命令上传 nuget 程序包

    前言 前面写了一篇文章介绍了如何将自己的程序集打包成nuget package并上传到nuget.org,传送门.全部是通过网页端来进行操作的,现在介绍一种比较方便快捷的方法就是用dotnet cli ...

  6. GO语言之urfave/cli命令行解析

    练习URL: https://blog.csdn.net/sd653159/article/details/83381786 相信只要部署过线上服务,都知道启动参数一定是必不可少的,当你在不同的网络. ...

  7. Jenkins CLI 命令详解

    笔者在前文<通过 CLI 管理 Jenkins Server>中介绍了如何通过 SSH 或客户端命令行的方式管理 Jenkins Server,限于篇幅,前文主要的目的是介绍连接 Jenk ...

  8. hive 修复元数据命令 & 如何快速复制一张hive的分区表

    hive 元数据修复命令 msck repair table xxx; 也可以用于分区表的快速复制 例如你需要从线上往线下导一张分区表,但是网又没有连通,你需要如何操作呢? 1.复制建表语句 2.从线 ...

  9. php cli命令 自定义参数传递

    所有的PHP发行版,不论是编译自源代码的版本还是预创建的版本,都在默认情况下带有一个PHP可执行文件.这个可执行文件可以被用来运行命令行的PHP程序.要在你的系统上找到这个可执行文件,就要遵照下面的步 ...

随机推荐

  1. 【洛谷 P2633】 Count on a tree(主席树,树上差分)

    题目链接 思维难度0 实现难度7 建出主席树后用两点的状态减去lca和lca父亲的状态,然后在新树上跑第\(k\)小 #include <cstdio> #include <cstr ...

  2. OO第4次博客作业

    OO第4次博客作业 一.第4单元设计 第四单元主要围绕UML图的结构进行JAVA代码编写,对JAVA的层次结构进行更多的认识.个人认为编程操作在实质上与上一章的PathContainer有许多的相同之 ...

  3. 【雅思】【绿宝书错词本】List37~48

    List 37 ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ List 38 ❤ ❤ ❤ ❤ ❤ ❤ ❤ ❤ ❤ ❤ ❤ ❤ ❤ ❤ ❤ List 39 ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ...

  4. UCOS内存管理

    STM32F10xxx内置64K字节的静态SRAM.它可以以字节.半字(16位)或全字(32位)访问 SRAM的起始地址是0x20000000 UCOSII //定义存储区 OS_MEM *DATA_ ...

  5. SpringBoot使用MockMVC单元测试Controller

    对模块进行集成测试时,希望能够通过输入URL对Controller进行测试,如果通过启动服务器,建立http client进行测试,这样会使得测试变得很麻烦,比如,启动速度慢,测试验证不方便,依赖网络 ...

  6. 02- web-mini框架添加路由、MySQL(二)

    本篇在上篇的基础上为其增设路由功能,同时将上篇中的数据库中数据备份添加进去. 一.装饰器 在之前有介绍过为一个函数不改变源代码不改变原函数的调用方式下为其增设附加功能,需要用到装饰器,而在该上篇的we ...

  7. c# Stack 类

  8. mysql:[Err] 1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key

    删除主键时,出错:[Err] 1075 - Incorrect table definition; there can be only one auto column and it must be d ...

  9. Spark-2.3.2 HBase BulkLoad

    在大量数据需要写入HBase时,通常有Put方式和BulkLoad两种方式. Put不做解释. BulkLoader方式的优势在于: 1.不会触发WAL预写日志,当表还没有数据时进行数据导入不会产生F ...

  10. awk命令笔记

    awk是啥? awk(奥克)是linux中一个强大的分析工具,linux面试必考 [root@rainbol ~]# awk Usage: awk [POSIX or GNU style option ...