Hive数仓之快速入门(二)
来源:互联网 发布:lufylegend.js 编辑:程序博客网 时间:2024/06/04 17:51
上次已经讲了《Hive数据仓库之快速入门一》不记得的小伙伴可以点击回顾一下,接下来我们再讲Hive数据仓库之快速入门二
DQL
hive中的order by、distribute by、sort by和cluster byorder by
全局排序,只有一个Reduce任务
sort by
只做jubu排序
distribute by
用distribute by 会对指定的字段按照hashCode值对reduce的个数取模,然后将任务分配到对应的reduce中去执行
cluster by
distribute by 和 sort by 合用就相当于cluster by,但是cluster by 不能指定排序为asc或desc 的规则,只能是desc倒序排列
注:distribute by 和 sort by,distribute by 必须在sort by前面
表连接
1.join只支持等值连接
2.可以 join 多于 2 个表
SELECT a.val, b.val, c.val FROM aJOIN b
ON (a.key = b.key1) JOIN c ON (c.key = b.key2)
注:如果join中多个表的 join key 是同一个,则 join 会被转化为单个map/reduce 任务
3.LEFT,RIGHT和FULL OUTER
SELECT a.val, b.val FROM a LEFT OUTER JOIN bON (a.key=b.key)
如果 d 表中找不到对应 c 表的记录,d 表的所有列都会列出 NULL,包括 ds 列。也就是说,join 会过滤d 表中不能找到匹配 c 表 join key 的所有记录。这样的话,LEFT OUTER 就使得查询结果与WHERE 子句无关
•解决办法
SELECT c.val, d.val FROM c LEFT OUTER JOIN d
ON (c.key=d.key AND d.ds='2009-07-07' AND c.ds='2009-07-07')
4.LEFT SEMI JOIN
LEFT SEMI JOIN 的限制是, JOIN 子句中右边的表只能在 ON 子句中设置过滤条件,在 WHERE 子句、SELECT 子句或其他地方过滤都不行
SELECT a.key, a.value
FROM a
WHERE a.key in
(SELECT b.key
FROM B);
可以被重写为:
SELECT a.key, a.val
FROM a LEFT SEMI JOIN b on (a.key = b.key)
5.UNION ALL
用来合并多个select的查询结果,需要保证select中字段须一致
select_statement UNION ALL select_statement UNION ALL select_statement ...
分析窗口函数
over (partition by * order by d desc)
其他
1.不支持EXIST ,NOT EXIST
2.Top N 关键字 为Limit
3.支持正则筛选字段,如SELECT `(ds|hr)?+.+` FROM test
DCL
权限Grant/revoke语法:
grant/revoke priv_type[column_list] on object_typeobject to/from principal_type principal_name
查看grant 定义:
show grant user user_name on table table_name;
创建/删除角色:
Create/drop Role role_name
角色分配/回收:
Grant role role_name to user user_name
Revoke role role_name from user user_name
角色授权:
Grant/revoke priv_type[col_List] on object_typeobject from/to role role_name
查看role定义:
show role grant role role_name
相关hive元信息表:
Db_privs:记录了User/Role在DB上的权限
Tbl_privs:记录了User/Role在table上的权限
Tbl_col_privs:记录了User/Role在table column上的权限
Roles:记录了全部创建的role
Role_map:记录了User与Role的相应关系
Hive函数
UDF、UDAF和UDTFUDF实现输入一行输出一行行的函数
UDAF实现输入多行输出一行的函数
UDTF实现输入一行输出多行的函数
自定义UDF、UDAF和UDTF
相关资料
hive2.0函数大全 http://www.cnblogs.com/MOBIN/p/5618747.htmlMysql数据导入Hive
通过sqoop把mysql数据导入到hive(若hive没对应表则自动建表)./bin/sqoop import --connect jdbc:mysql://172.17.4.1:3306/poi --username lizt --table poi_amap --hive-import --password 123456
python 客户端
pyhs2pip install pyhs2
阅读全文
0 0
- Hive数仓之快速入门(二)
- Hive数据仓库之快速入门
- HIVE入门二之表DDL(一)
- Smarty快速入门之二
- Hive入门学习之二:Hive 的部署
- 【转载】HDFS+MapReduce+Hive+HBase 十分钟快速入门(二)
- hive快速入门
- HIVE快速入门
- HIVE快速入门
- HIVE快速入门
- Hive快速入门
- Hadoop-Hive快速入门
- Hive快速入门
- Hive 快速入门
- Hive快速入门
- DirectShow开发快速入门之慨述(二)
- jQuery快速入门基础教程之事件(二)
- hive入门学习:hive的调优(二)
- webview界面的滑动监听
- cf div2 #449 C.Nephren gives a riddle
- eclipse配置
- 顺序栈
- Ubuntu16.04 耍帅快捷键(持续更新)
- Hive数仓之快速入门(二)
- vue
- 交易延展性攻击原理(防止自己被攻击)
- [HDU-1069]Monkey and Banana
- Git常用命令
- java分布式系统开关功能设计(服务升降级)
- 初始Linux下进程及其创建
- install ffmpeg from source for OS X/ubuntu
- android studio java.util.concurrent.ExecutionException: java.lang.UnsupportedOperationException