《HIVE编程指南》第二章基础操作

CLI

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

CLI选项

hive --help --service cli

《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>set会将四个命名空间中的所有的变量都打印出来。
  • hive>set -v会将Hadoop中所定义的所有属性,以及上边的内容都打印出来。
用户定义变量hivevar
  • 外部shell

    hive --define key=value
    《HIVE编程指南》第二章基础操作

  • 内部shell

    set hivevar:key=value
    《HIVE编程指南》第二章基础操作
    前缀hivevar是可以省略的

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

《HIVE编程指南》第二章基础操作

注意""字符串还是要加

hiveconf

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

《HIVE编程指南》第二章基础操作

hivesystem

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

env

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


HIVE中的"一次命令"

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

《HIVE编程指南》第二章基础操作
可以将这个查询结果保存到一个文件中。增加-S选项可以开启静默模式,在输出结果中去除“OK”和“TIME taken”等行,只保留查询结果

《HIVE编程指南》第二章基础操作

当用户不能完全记得某个属性名时,可以使用下边的方法来模糊获取属性名。
《HIVE编程指南》第二章基础操作


从文件中执行Hive查询

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

  • 外部执行
    《HIVE编程指南》第二章基础操作
  • 内部执行
    《HIVE编程指南》第二章基础操作

hiverc文件

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

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

《HIVE编程指南》第二章基础操作

hive -v

普通模式
《HIVE编程指南》第二章基础操作
冗余模式
《HIVE编程指南》第二章基础操作

查看操作命令历史

在HOME文件下的.hivehistory

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


hive中的标本如何注释

《HIVE编程指南》第二章基础操作


显示字段名

set hive.cli.print.header=true;

《HIVE编程指南》第二章基础操作