hive左连接,右连接和内连接一张或多张表

新坑~~

最近几个月,本人因为工作原因一直在使用hadoop + hive + map/reduce 和shell脚本来处理一些数据的统计和聚合问题,其中涉及到的坑和教训诸多,特此记录以备后用,亦希望能给新入职(入坑)的童鞋们一点参考。内容比较驳杂,姑且尽力来归类。

hive的左连接,右连接,内连接
假设:A表和B表,分别有key, value字段
A:

keyvalue
11
22

B

keyvalue
13
24
  1. 左连接 left join
    语法:A left join B on 连接条件 where 筛选条件
    示例:select * from A left join B on A.id = B.id where A.value >= 2
    释义:以A表为准,把B表中id相同的数据拼接到A表中该id所在的行,并筛选出A中value>=2的部分
    结果:

    keyvalue_Avalue_B
    224

    注意:此时数据基准为left join 关键字左边的表

  2. 右连接 right join
    语法:B left join A on 连接条件 where 筛选条件
    示例:select * from B right join A on A.id = B.id where A.value >= 2
    释义:以A表为准,把B表中id相同的数据拼接到A表中该id所在的行,并筛选出A中value>=2的部分
    结果:

    keyvalue_Avalue_B
    224

    注意:此时数据基准为right join 右边的表

  3. 内连接 inner join
    语法:A inner join B on 连接条件 where 筛选条件
    示例:select * from A inner join B on A.id = B.id where A.value >= 2
    释义:选择A,B中相同id的数据,并筛选出A中value>=2的部分
    结果:

    keyvalue_Avalue_B
    224

    注意:此时没有基准表,类似于求A,B的交集

  4. 连接多张表
    其实语法很类似,以左连接为例:
    A left join B on A.id = B.id left join C on A.id = C.id
    注意这么做以后数据拼接的比较慢,注意开销

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值