• Hive学习:Hive连接JOIN用例详解


    1 准备数据:

    1.1 t_1

    01	张三
    02	李四
    03	王五
    04	马六
    05	小七
    06	二狗
    

    1.2 t_2

    01	11
    03	33
    04	44
    06	66
    07	77
    08	88
    

    1.3 t_3

    01	男
    02	男
    03	女
    04	男
    05	女
    06	女
    07	男
    08	X
    

    2 创建表:t_1,t_2,t_3

    create table if not exists t_1(id string,name string)row format delimited fields terminated by '	';
    
    create table if not exists t_2(id string,score string)row format delimited fields terminated by '	';
    
    create table if not exists t_3(id string,sex string)row format delimited fields terminated by '	';
    

    3 加载数据

    load data local inpath '/root/tmp/t_1' into table t_1;
    load data local inpath '/root/tmp/t_2' into table t_2;
    load data local inpath '/root/tmp/t_3' into table t_3;
    

    4 笛卡尔积:Join

    select * from t_1 join t_2;
    等价于:
    select * from t_1,t_2;
    

    5 等值连接:Join ... on(查交集)

    select * from t_1 t1 join t_2 t2 on t1.id=t2.id;
    

    图解原理:

    5 左连接: left join ... on ...

    左连接是显示左边的表的所有数据,如果有右边表的数据与之对应,则显示;否则显示null

    select * from t_1 t1 left join t_2 t2 on t1.id=t2.id;
    

    图解原理:

    6 右连接: right join ... on ...

    与左连接类似,右连接是显示右边的表的所有数据,如果有左边表的数据与之对应,则显示;否则显示null

    select * from t_1 t1 right join t_2 t2 on t1.id=t2.id;
    

    图解原理:

    7 全连接:full outer join ... on

    相当于t_1和t_2的数据都显示,如果没有对应的数据,则显示Null.

    select * from t_1 t1 full outer join t_2 t2 on t1.id=t2.id;
    

    图解原理:

    8 左半连接:semi join

    semi join仅会显示t_1的数据,即左边表的数据。效率比左连接快,因为它会先拿到t_1的数据,然后在t_2中查找,只要查找到结果立马就返回t_1的数据。

    select * from t_1 t1 left semi join t_2 t2 on t1.id=t2.id;
    

    图解原理:

    9 用单次MapReduce实现连接:

    如果在连接中使用了公共键,Hive还支持通过一次MapReduce来连接多个表。

    select t1.*,t3.sex,t2.score from t_1 t1 join t_3 t3 on t1.id=t3.id join t_2 t2 on t2.id=t1.id;
    

  • 相关阅读:
    [转]狼的故事8:生存就是坚持
    [转]狼的故事7:单枪匹马的代价
    如何在GridView的Footer内显示总计?
    javascript中如何正确将日期(Date)字符串转换为日期(Date)对象?
    无限级分类(非递归算法/存储过程版/GUID主键)完整数据库示例_(1)表结构
    [转]狼的故事12:王者的风范
    [转]狼的故事2:光线背后的嚎叫
    vs.net2008正式版发布并提供下载(英文版)
    [转]狼的故事11:以牙还牙
    [转]狼的故事3:百分之百的死亡
  • 原文地址:https://www.cnblogs.com/lingchen-liang/p/10222889.html
Copyright © 2020-2023  润新知