0512

与sql区别

hive不支持in,需要左半开连接。
LEFT SEMI JOIN
左边的一条记录,一旦在右边找到匹配的记录,就停了下来。左边的一条记录,一旦在右边找到匹配的记录,就停了下来。

严格模式限制

1.不能使用笛卡尔积join
2.ORDER BY操作必须要有LIMIT语句进行限制

记录

ORDER BY(使用一个reducer,耗时很慢)
SORT BY:部分有序,可以提高全局排序的效率

0615


第1章 基础知识

第2章 基础操作

2.3Hive内部是什么

Hive有一个内置Derby数据库,使用时,不可以并发打开两个Hive CLI

2.4启动Hive

2.5配置Hadoop环境

2.5.1本地模式配置

2.5.2分布式模式和伪分布式模式配置

2.5.3使用JDBC连接元数据

2.6Hive命令

命令选项
hive --help可以提示很多命令选项。

2.7命令行界面

2.7.1CLI选项

hive --help --service cli

2.7.2变量和属性

hive --define key=value
hive --hivevar key=value
set k
--define key=value和--hivevar key=value 是等价的,可以让用户在命令行定义用户自定义变量以便在Hive脚本中引用。
当用户使用时,会将这些值放到hivevar命名空间。

命名空间

使用权限

描述

hivevar

可读/可写

用户自定义变量

hiveconf

可读/可写

Hive相关的配置属性

system

可读/可写

Java定义的配置属性

env

只可读

Shell环境定义的环境变量

Hive变量内部都是以Java字符串的方式存储的
hiveconf是可选的,用户必须使用system:或者env:

2.7.3 Hive中“一次使用”命令

hive -e "select ";
-S选项可以开启静默模式
可以将查询结果重定向,保存到文件中。

2.7.4 从文件中执行Hive查询

使用-f 文件名,执行文件中的一个或多个查询语句,惯例,文件是以.hql或.q结尾的
Hive -f [文件名.hql或者.q]
也可以在hive cli中执行source 文件名

source 文件名.hql;
source 文件名.hql;

2.7.5 hiverc文件

hive -i [文件名]
允许用户执行一个文件,当CLI启动时,在提示符出现前会先执行这个文件。Hive会自动在HOME目录下寻找名为.hiverc的文件,而且会自动执行这个文件中的命令(如果存在)。
在设置系统属性,或增加自定义扩展Java包时,比较常用。

【警告】——每行结尾要记得加分号

2.7.6 使用Hive CLI的更多介绍

自动补全功能
Tab键

笔者亲测,在beeline的时候好像不是那么灵活。

2.7.7 查看操作命令历史

Hive会将最近的100,00行命令记录到$HOME/.hivehistory

2.7.8 执行shell命令

hive> ! /bin/echo xxxxx;
在hive命令行前加感叹号,末尾加分号。
不过,不能使用交互式命令,而且不支持管道功能和自动补全功能,也不支持通配符。

2.7.9 在hive内使用Hadoop的dfs命令

在hadoop dfs中,直接去掉hadoop,然后以分号结尾
hive>dfs --help;

2.7.10 Hive脚本中如何进行注释

可以用--开头的字符串表示注释,而且注释只能放在脚本,通过hive -f script_name执行

2.7.11 显示字段名称

通过hiveconf配置项hive.cli.print.header为true
set hive.cli.print.header=true;
添加到$HOME/.hiverc文件中