热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:Hadoop之Hive的Join语句

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Hadoop之Hive的Join语句相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Hadoop之Hive的Join语句相关的知识,希望对你有一定的参考价值。






😊昨天我们学习了数据库的DML语言,主要包括数据的导入、导出和查询,💘有兴趣的小伙伴可以看看👇:


  • 第一篇: Hadoop之Hive数据的导入与导出(DML).
  • 第二篇: Hadoop之Hive查询语句.

🐶今天我们来继续学习Hive的Join部分。听说Join有7种哦!



目录:


    • 1.内连接
    • 2.左外连接
    • 3.右外连接
    • 4.全外连接
    • 5.差值
      • 5.1 左表独有
      • 5.2右表独有

    • 6.左右表独有
      • 8.多表连接
      • 9.笛卡尔积

    • 参考资料




1.内连接

在这里插入图片描述

Hive支持通常的SQL JOIN语句,等值连接是将两张表中的相同字段信息连接起来


  • 根据员工表和部门表中的部门编号相等,查询员工编号、员工名称和部门名称;

--内连接
select e.empno, e.ename, d.deptno, d.dname
from emp e join dept d
on e.deptno=d.deptno;

在这里插入图片描述


2.左外连接

在这里插入图片描述
左外连接会将左表的数据全部展示,没有连接的部分将会补null值


  • 根据员工表和部门表中的部门编号相等,查询员工编号、员工名称、部门编号和部门名称;如果没有则用null补充

select e.empno,e.ename,e.deptno,d.dname
from emp e left join dept d
on e.deptno=d.deptno;

在这里插入图片描述


3.右外连接


  • 查询所有部门中对应的员工信息

select e.empno,e.ename,e.deptno,d.dname
from emp e right join dept d
on e.deptno=d.deptno;

在这里插入图片描述


4.全外连接

在这里插入图片描述


  • 查询所有员工信息和部门信息

select e.empno,e.ename,e.deptno,d.dname
from emp e full join dept d
on e.deptno=d.deptno;

在这里插入图片描述


5.差值


5.1 左表独有

在这里插入图片描述
这里的差值就是A左连接B的结果在减去A和B的交集。


  • 查询所在部门为null的员工信息

select e.empno,e.ename,e.deptno,d.dname
from emp e left join dept d
on e.deptno=d.deptno
where d.deptno is null;

在这里插入图片描述
我们也可以采用子查询,不过效率太低了

select e.empno,e.ename,e.deptno,d.dname
from emp e
where e.deptno not in (select deptno from dept);

5.2右表独有

在这里插入图片描述


  • 查询部门中不存在任何员工信息的部门信息

select d.deptno,d.dname
from emp e right join dept d
on e.deptno=d.deptno
where e.deptno is null;

在这里插入图片描述


6.左右表独有

在这里插入图片描述


  • 查询员工表特有信息和部门表的特有信息

--在全外连接的基础上操作
select e.empno,e.ename,e.deptno,d.dname
from emp e full join dept d
on e.deptno=d.deptno
where e.deptno is null or d.deptno is null;

在这里插入图片描述
也可以使用左右差值的结果做并集

select * from(
select e.empno,e.ename,e.deptno,d.deptno,d.dname
from emp e left join dept d
on e.deptno=d.deptno
where d.deptno is null
union
select e.empno,e.ename,e.deptno,d.deptno,d.dname
from emp e right join dept d
on e.deptno=d.deptno
where e.deptno is null)tmp;

在这里插入图片描述


8.多表连接

我们准备添加一个表的数据

1700 Beijing
1800 London
1900 Tokyo

在这里插入图片描述


  • 查询员工姓名,部门名称和部门所在城市名称

--三表连接,顺序从左到右
select e.ename,d.dname,l.loc_name
from emp e join dept d on e.deptno=d.deptno
join location l on d.loc=l.loc;

优化:当对 3 个或者更多表进行 join 连接时,如果每个 on 子句都使用相同的连接键的话,那么只会产生一个 MapReduce job
在这里插入图片描述


9.笛卡尔积

笛卡尔积会在什么情况下产生呢?


  • 省略连接条件
  • 连接条件无效
  • 所有表中的所有行相互连接

案例:

--笛卡尔积
select empno,dname from emp,dept;

结果如下:
在这里插入图片描述


参考资料

《大数据Hadoop3.X分布式处理实战》






推荐阅读
  • 从0到1搭建大数据平台
    从0到1搭建大数据平台 ... [详细]
  • 如何高效启动大数据应用之旅?
    在前一篇文章中,我探讨了大数据的定义及其与数据挖掘的区别。本文将重点介绍如何高效启动大数据应用项目,涵盖关键步骤和最佳实践,帮助读者快速踏上大数据之旅。 ... [详细]
  • 在Hive中合理配置Map和Reduce任务的数量对于优化不同场景下的性能至关重要。本文探讨了如何控制Hive任务中的Map数量,分析了当输入数据超过128MB时是否会自动拆分,以及Map数量是否越多越好的问题。通过实际案例和实验数据,本文提供了具体的配置建议,帮助用户在不同场景下实现最佳性能。 ... [详细]
  • DAO(Data Access Object)模式是一种用于抽象和封装所有对数据库或其他持久化机制访问的方法,它通过提供一个统一的接口来隐藏底层数据访问的复杂性。 ... [详细]
  • 如何在Java中使用DButils类
    这期内容当中小编将会给大家带来有关如何在Java中使用DButils类,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。D ... [详细]
  • 本文总结了在SQL Server数据库中编写和优化存储过程的经验和技巧,旨在帮助数据库开发人员提升存储过程的性能和可维护性。 ... [详细]
  • 本文详细介绍了MySQL数据库的基础语法与核心操作,涵盖从基础概念到具体应用的多个方面。首先,文章从基础知识入手,逐步深入到创建和修改数据表的操作。接着,详细讲解了如何进行数据的插入、更新与删除。在查询部分,不仅介绍了DISTINCT和LIMIT的使用方法,还探讨了排序、过滤和通配符的应用。此外,文章还涵盖了计算字段以及多种函数的使用,包括文本处理、日期和时间处理及数值处理等。通过这些内容,读者可以全面掌握MySQL数据库的核心操作技巧。 ... [详细]
  • 在处理数据库中所有用户表的彻底清除时,目前尚未发现单一命令能够实现这一目标。因此,需要采用一种较为繁琐的方法来逐个删除相关表及其结构。具体操作可以通过编写PL/SQL脚本来实现,该脚本将动态生成并执行删除表的SQL语句。尽管这种方法相对复杂,但在缺乏更简便手段的情况下,仍是一种有效的解决方案。未来或许可以通过数据库管理工具或更高版本的数据库系统提供更简洁的处理方式。 ... [详细]
  • 在使用 Cacti 进行监控时,发现已运行的转码机未产生流量,导致 Cacti 监控界面显示该转码机处于宕机状态。进一步检查 Cacti 日志,发现数据库中存在 SQL 查询失败的问题,错误代码为 145。此问题可能是由于数据库表损坏或索引失效所致,建议对相关表进行修复操作以恢复监控功能。 ... [详细]
  • 深入解析 SQL 数据库查询技术
    本文深入探讨了SQL数据库查询技术,重点讲解了单表查询的各种方法。首先,介绍了如何从表中选择特定的列,包括查询指定列、查询所有列以及计算值的查询。此外,还详细解释了如何使用列别名来修改查询结果的列标题,并介绍了更名运算的应用场景和实现方式。通过这些内容,读者可以更好地理解和掌握SQL查询的基本技巧和高级用法。 ... [详细]
  • Presto:高效即席查询引擎的深度解析与应用
    本文深入解析了Presto这一高效的即席查询引擎,详细探讨了其架构设计及其优缺点。Presto通过内存到内存的数据处理方式,显著提升了查询性能,相比传统的MapReduce查询,不仅减少了数据传输的延迟,还提高了查询的准确性和效率。然而,Presto在大规模数据处理和容错机制方面仍存在一定的局限性。本文还介绍了Presto在实际应用中的多种场景,展示了其在大数据分析领域的强大潜力。 ... [详细]
  • 数据库多表联合查询:内连接与外连接详解
    在数据库的多表查询中,内连接和外连接是两种常用的技术手段。内连接用于检索多个表中相互匹配的记录,即只有当两个表中的记录满足特定的连接条件时,这些记录才会被包含在查询结果中。相比之下,外连接则不仅返回匹配的记录,还可以选择性地返回不匹配的记录,具体取决于左外连接、右外连接或全外连接的选择。本文将详细解析这两种连接方式的使用场景及其语法结构,帮助读者更好地理解和应用多表查询技术。 ... [详细]
  • 2012年9月12日优酷土豆校园招聘笔试题目解析与备考指南
    2012年9月12日,优酷土豆校园招聘笔试题目解析与备考指南。在选择题部分,有一道题目涉及中国人的血型分布情况,具体为A型30%、B型20%、O型40%、AB型10%。若需确保在随机选取的样本中,至少有一人为B型血的概率不低于90%,则需要选取的最少人数是多少?该问题不仅考察了概率统计的基本知识,还要求考生具备一定的逻辑推理能力。 ... [详细]
  • HBase在金融大数据迁移中的应用与挑战
    随着最后一台设备的下线,标志着超过10PB的HBase数据迁移项目顺利完成。目前,新的集群已在新机房稳定运行超过两个月,监控数据显示,新集群的查询响应时间显著降低,系统稳定性大幅提升。此外,数据消费的波动也变得更加平滑,整体性能得到了显著优化。 ... [详细]
  • 通过使用Sqoop导入工具,可以精确控制并高效地将表数据的特定子集导入到HDFS中。具体而言,可以通过在导入命令中添加WHERE子句来指定所需的数据范围,从而在数据库服务器上执行相应的SQL查询,并将查询结果高效地存储到HDFS中。这种方法不仅提高了数据导入的灵活性,还确保了数据的准确性和完整性。 ... [详细]
author-avatar
Sophie-wyq_661
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有