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文件中