Hive数仓之快速入门(二)

上次已经讲了《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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值