CLI

命令行界面也就是CLI,是和HIVe进行交互的最常用的方式。使用CLI,用户可以创建表,交叉模式以及查询等。

CLI选项

hive --help --service cli

hive 定义变量赋值存放结果值 hive自定义变量_命名空间

变量和属性

--define key=value实际上和--hivevar key=value是等价的。二者都可以让用户在命令行中定义用户自定义变量以便在hive标本中引用。

当用户使用这个功能时,Hive会将这些键值对放在hivevar命名空间中,这样就可以和其他3中内置命名空间(hiveconf,system,env)进行区分.

Hive中变量的属性命名空间

命名空间

使用权限

描述

hivevar

可读/可写

(hive0.8以后版本)用户自定义的变量

hiveconf

可读/可写

hive相关的配置属性

system

可读/可写

java定义的配饰属性

env

只可读

Shell环境(例如bash)定义的环境变量

Hive变量内部是以Java字符串的方式存储的。用户可以在查询中引用变量。Hive会先使用变量值替换查询变量的引用,然后才会将查询语句提交给查询处理器。

在CLI中可以使用SET命令显示或者修改变量值

hive 定义变量赋值存放结果值 hive自定义变量_hive 定义变量赋值存放结果值_02

  • hive>set会将四个命名空间中的所有的变量都打印出来。
  • hive>set -v会将Hadoop中所定义的所有属性,以及上边的内容都打印出来。
用户定义变量hivevar
  • 外部shell
    hive --define key=value
  • hive 定义变量赋值存放结果值 hive自定义变量_命名空间_03

  • 内部shell
    set hivevar:key=value
  • hive 定义变量赋值存放结果值 hive自定义变量_Hive_04

  • 前缀hivevar是可以省略的

在CLI中查询语句的变量引用会被替换掉然后菜提交给查询处理器

hive 定义变量赋值存放结果值 hive自定义变量_命名空间_05

注意""字符串还是要加

hiveconf

hive cli.print.current.db=true,开启这个属性可以在CLI提示符前打印出当前所在的数据库名

hive 定义变量赋值存放结果值 hive自定义变量_hive_06

hivesystem

system命名空间,JAVA对这个空间具有可读可写的权利

env

对于环境变量只有读的权利
和hivevar中的变量不同,用户必须指明system或者env前缀来操作其中的变量。


HIVE中的"一次命令"

用户可能有时期望执行一个或者多个查询(使用分号分割),执行结束后,hive CLI 立刻退出,HIve提供了这样的功能,因为CLI可以接受 -e这样的形式。

hive 定义变量赋值存放结果值 hive自定义变量_hive 定义变量赋值存放结果值_07


可以将这个查询结果保存到一个文件中。增加-S选项可以开启静默模式,在输出结果中去除“OK”和“TIME taken”等行,只保留查询结果

hive 定义变量赋值存放结果值 hive自定义变量_命名空间_08

当用户不能完全记得某个属性名时,可以使用下边的方法来模糊获取属性名。

hive 定义变量赋值存放结果值 hive自定义变量_大数据_09


从文件中执行Hive查询

Hive可以使用-f文件名的方式来执行指定文件中的一个或者多个查询。按照惯例,通常把这些hive查询文件保存为具有.q或者.hql结尾的文件。

  • 外部执行
  • 内部执行

hiverc文件

hive -i 文件名这个选项允许用户制定一个文件,CLI启动时,在提示符出现前自动执行这个文件。Hive会在HOME下自动寻找名为.hiverc的文件。

例如我们可以将刚才设置的显示数据库名加入.hiverc文件中使每次启动时都能显示数据库

hive -v

普通模式

hive 定义变量赋值存放结果值 hive自定义变量_命名空间_10

冗余模式

hive 定义变量赋值存放结果值 hive自定义变量_命名空间_11

查看操作命令历史

在HOME文件下的.hivehistory

在CLI中可以通过上下箭头来查看,并通过enter再次执行


hive中的标本如何注释

hive 定义变量赋值存放结果值 hive自定义变量_Hive_12


显示字段名

set hive.cli.print.header=true;

hive 定义变量赋值存放结果值 hive自定义变量_大数据_13