1.关于hive中的各种join

  Hive中有许多的Join操作,例如:LEFT、RIGHT和FULL OUTER JOIN,INNER JOIN,LEFT SEMI JOIN等;

1.1.准备两组数据:

a.txt     b.txt           

1,a      2,bb
2,b   3,cc
3,c   7,yy
4,d   9,pp
7,y
8,u

1.2.在Hive中建表:

create table a(id int,name string) row format delimited fields terminated by ',';
create table b(id int,name string) row format delimited fields terminated by ',';

1.3.在Hive表中导入数据:

load data local inpath '/root/a.txt' into table a;
load data local inpath '/root/b.txt' into table b;

1.4.inner join内连接:select * from a inner join b on a.id=b.id;

  

  相当于是求交集

1.5.left join左连接:select * from a left join b on a.id=b.id;(左边的表的记录都打印出来)

  

1.6.right join右连接:select * from a right join b on a.id=b.id;(右边的表的记录都打印出来)

1.7.full outer join右连接:select * from a full outer join b on a.id=b.id;

  

  两边的记录都会出来,如果没有的就填NULL

1.7.left semi outer join连接:select * from a left semi join b on a.id = b.id;

  

  SEMI在Hive中用的很广泛,用于实现Exist IN 子查询的。LEFT SEMI JOIN相当于Inner Join中取一半

----LEFT SEMI JOIN :Hive 当前没有实现 IN/EXISTS 子查询,可以用 LEFT SEMI JOIN 重写子查询语句

 例如:重写以下子查询为LEFT SEMI JOIN

  SELECT a.key, a.value FROM a WHERE a.key exist in (SELECT b.key FROM B);

   可以被重写为:SELECT a.key, a.value FROM a LEFT SEMI JOIN b on (a.key = b.key);

查询与“刘晨”在同一个系学习的学生:
  hive> select s1.Sname from student s1 left semi join student s2 on s1.Sdept=s2.Sdept and s2.Sname='刘晨';

08_Hive中的各种Join操作的更多相关文章

  1. 轻量级ORM框架——第二篇:Dapper中的一些复杂操作和inner join应该注意的坑

       上一篇博文中我们快速的介绍了dapper的一些基本CURD操作,也是我们manipulate db不可或缺的最小单元,这一篇我们介绍下相对复杂 一点的操作,源码分析暂时就不在这里介绍了. 一:t ...

  2. 在MongoDB中使用JOIN操作

    SQL与NoSQL最大的不同之一就是不支持JOIN,在传统的数据库中,SQL JOIN子句允许你使用普通的字段,在两个或者是更多表中的组合表中的每行数据.例如,如果你有表books和publisher ...

  3. 重温sql语句中的join操作

    1.join语句 Sql join语句用来合并两个或多个表中的记录.ANSI标准SQL语句中有四种JOIN:INNER,OUTER,LEFTER,RIGHT,一个表或视图也可以可以和它自身做JOIN操 ...

  4. SQL点滴2—重温sql语句中的join操作

    原文:SQL点滴2-重温sql语句中的join操作 1.join语句 Sql join语句用来合并两个或多个表中的记录.ANSI标准SQL语句中有四种JOIN:INNER,OUTER,LEFTER,R ...

  5. hive中的子查询改join操作(转)

    这些子查询在oracle和mysql等数据库中都能执行,但是在hive中却不支持,但是我们可以把这些查询语句改为join操作: -- 1.子查询 select * from A a where a.u ...

  6. 轻量级ORM框架:Dapper中的一些复杂操作和inner join应该注意的坑

    上一篇博文中我们快速的介绍了dapper的一些基本CURD操作,也是我们manipulate db不可或缺的最小单元,这一篇我们介绍下相对复杂 一点的操作,源码分析暂时就不在这里介绍了. 一:tabl ...

  7. MySQL中使用INNER JOIN来实现Intersect并集操作

    MySQL中使用INNER JOIN来实现Intersect并集操作 一.业务背景 我们有张表设计例如以下: CREATE TABLE `user_defined_value` ( `RESOURCE ...

  8. Mapreduce中的join操作

    一.背景 MapReduce提供了表连接操作其中包括Map端join.Reduce端join还有半连接,现在我们要讨论的是Map端join,Map端join是指数据到达map处理函数之前进行合并的,效 ...

  9. JavaScript jQuery 中定义数组与操作及jquery数组操作

    首先给大家介绍javascript jquery中定义数组与操作的相关知识,具体内容如下所示: 1.认识数组 数组就是某类数据的集合,数据类型可以是整型.字符串.甚至是对象Javascript不支持多 ...

随机推荐

  1. Security命名空间配置

    http://www.mossle.com/docs/springsecurity3/html/ns-config.html Security命名空间配置 2.1. 介绍 从Spring-2.0开始可 ...

  2. logstash输出至elasticsearch

    续上一篇 上一篇描述了通过logback配置用logstash收集springmvc项目日志,本文是描述如何进一步通过elasticsearch对所收集数据进行的分析. output { elasti ...

  3. node.js 安装配置笔记

    先设置 NODEJS_MODULES 系统环境变量,我在这里设置为:D:\Program Files\nodejs\node_modules, 然后修改 npm.cmd 文件中 SET "N ...

  4. Centos7服务器环境搭建

    1.Apache安装 yum install httpd systemctl start httpd.service #启动 systemctl stop httpd.service#停止 syste ...

  5. Qt——树的搜索实现源码

    一.使用QTreeWidget 头文件: /************************************************************************ 树的搜索类 ...

  6. 使用请求包装器RequestWrapper 对博客内容进行编码

    1.写一个文章类 代码如下 package model; public class article { private int id; private String title; private St ...

  7. Vue Cli3.0 使用jquery

    参考链接:https://blog.csdn.net/ai520587/article/details/84098601

  8. [LuoguP2143]巨额资金_Kruskal_Matrix-Tree定理

    巨额资金 题目链接:https://www.luogu.org/problem/P2143 数据范围:略. 题解: 有一个条件是每种权值的边最多是$10$条. 但是并不知道怎么用.... 不过有一点我 ...

  9. abstract class 与 interface

    abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力. abstract class和inte ...

  10. Eureka【启用https】

    上一篇主要说的是开启http basic认证,从安全角度来讲,基于base64编码,容易被抓包后破解,在公网中很不安全,本文详谈如何在eureka server和eureka client中开启htt ...