上次已经讲了《Hive数据仓库之快速入门一》不记得的小伙伴可以点击回顾一下,接下来我们再讲Hive数据仓库之快速入门二

DQL

hive中的order by、distribute bysort bycluster by
 
order 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 a JOIN b
    ON (a.key = b.key1) JOIN c ON (c.key = b.key2)
注:如果join中多个表的 join key 是同一个,则 join 会被转化为单个 map/reduce 任务
 
3.LEFTRIGHTFULL OUTER
SELECT a.val, b.val FROM a LEFT OUTER JOIN b ON (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_type object 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_type object from/to role role_name
 
查看role定义:
show role grant role role_name
 
相关hive元信息表:
Db_privs:记录了User/Role在DB上的权限
Tbl_privs:记录了User/Roletable上的权限
Tbl_col_privs:记录了User/Roletable column上的权限
Roles:记录了全部创建的role
Role_map:记录了UserRole的相应关系

Hive函数

UDF、UDAF和UDTF
UDF实现输入一行输出一行行的函数
UDAF实现输入多行输出一行的函数
UDTF实现输入一行输出多行的函数
自定义UDF、UDAF和UDTF

相关资料

hive2.0函数大全 http://www.cnblogs.com/MOBIN/p/5618747.html

Mysql数据导入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 客户端

pyhs2
pip install pyhs2

最新文章

  1. 为什么基于Windows Server 2008 R2的网络负载均衡(NLB)配置的时候总会报错“主机不可访问”?
  2. JAVA中去掉空格经典整理
  3. [.NET] 自己实现任务池(模仿线程池)
  4. 使用java连接MySQL数据库
  5. javascript的地基
  6. java中基本类型和包装类型实践经验
  7. 偶遇makeblock
  8. JavaWeb开发好资料
  9. 微信公共服务平台开发(.Net 的实现)9-------处理二维码
  10. ARM 开发板嵌入式linux系统与主机PC通过串口传输文件
  11. CF-599B - Spongebob and Joke
  12. Java线程同步与死锁认识
  13. mysql模拟插入数据表
  14. ionic创建项目遇到的各种问题
  15. linux环境 安装chromedriver 和 phantomjs的方法
  16. C#:多进程开发,控制进程数量
  17. Golang的优雅重启
  18. [LeetCode&Python] Problem 458. Poor Pigs
  19. go get golang.org/x 包失败解决方法
  20. part1:12-sudo用户管理和Linux密码故障排除

热门文章

  1. freeze
  2. django admin的实用配置
  3. windows server 2012 FTP连接报530 User 用户名 cannot log in home directory inaccessible的解决方法
  4. 关于js中操作数组的一些方法
  5. ldd源码编译出现的问题
  6. Sql Server免域,异地备份
  7. node-sass 不能正常安装解决办法
  8. oracle xe在centos下的安装(更)
  9. 计蒜客 2019 蓝桥杯省赛 B 组模拟赛(三)数字拆分
  10. 父组件传值给子组件的v-model属性