Hive的连接查询——Join查询

        Join语句主要做多表关联查询:当我们需要的数据来自多张表,多张表之间还有连接关系,我们就可以使用连接查询获取我们相关的信息。

        Hive中连接查询和sql中的join连接几乎一致,共有四种:内连接、左外连接、右外连接、满外连接。

        注意在MySQL中支持四种连接的语法,但是不支持满外连接的操作(满外连接的语法是支持的)。Hive都支持。

join语句的一般格式:

select 查询字段

from tableA

[inner|left|right|full] join tableB

on A\B 两个表的连接条件

where 筛选条件

group by 分组条件

having 分组筛选

order by 全局排序

limit 范围限制

一、内连接

 内连接:只有进行连接的两个表中都存在与连接条件相匹配的数据才会被保留下来。

案例:查询哪些部门有员工,并且显示每个部门员工的姓名

hive (default)> select e.empno, e.ename, d.deptno from emp as e inner join dept as d on e.deptno = d.deptno;

二、左外连接

左外连接:JOIN操作符左边表中符合WHERE子句的所有记录将会被返回。

案例:查询所有的员工信息以及员工对应的部门名字,如果员工没有对应部门,数据也保留。

hive (default)> select e.empno, e.ename, d.deptno from emp as e left join dept as d on e.deptno = d.deptno;

三、右外连接

右外连接:JOIN操作符右边表中符合WHERE子句的所有记录将会被返回。

案例:查询所有部门信息,并且将部门对应的员工信息也保留,如果部门没有员工,部门信息也保留

hive (default)> select e.empno, e.ename, d.deptno from emp e right join dept d on e.deptno = d.deptno;

四、满外连接

满外连接:将会返回所有表中符合WHERE语句条件的所有记录。如果任一表的指定字段没有符合条件的值的话,那么就使用NULL值替代。

案例:查询所有员工和部门信息,如果员工有部门则显示部门名,如果部门有员工就显示员工id和姓名;如果员工没有部门、部门没员工,显示NULL

hive (default)> select e.empno, e.ename, d.deptno from emp e full join dept d on e.deptno = d.deptno;

五、笛卡尔乘积

join中有一个禁忌的join,叫做笛卡尔乘积,这种join属于一种致命的错误结果。

1、笛卡尔集会在下面条件下产生:

(1)省略连接条件(on)

(2)连接条件无效

(3)所有表中的所有行互相连接

2、案例实操

hive (default)> select empno, deptno from emp, dept;

FAILED: SemanticException Column deptno Found in more than One Tables/Subqueries

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Hive是一个大数据分析的开源平台,它提供了很多的综合应用案例,其中之一是用户学历查询。用户学历查询案例中,我们可以使用Hive从数据仓库中读取关于用户的数据,然后通过分析和聚合这些数据,来确定用户的学历信息。在这个过程中,Hive提供了强大的SQL语句支持,以及丰富的函数库,可以满足各种复杂的分析需求。 ### 回答2: 近日,一家大型人力资源公司因为工作中频繁查询员工学历信息而决定使用hive技术来进行数据的处理和分析,通过hive的综合应用,实现了更加高效便捷的用户学历查询。 此次项目中,该公司首先进行了数据清洗和处理,将员工学历相关信息从不同的数据源中收集并整合,统一存储在hive的数据仓库中。接着,通过hiveQL语言对数据进行查询和筛选,实现了仅需几秒钟即可得到用户学历信息的目标。使用hive的好处是能够快速处理海量数据,提高查询效率,同时还能实现数据分析和统计,并可视化展示数据结果。 在具体的操作中,该公司将原始数据进行拆分和转换,把不同的表进行组合和分析。同时,在处理数据过程中还运用了一些hadoop生态体系的其他组件,比如pig和spark等工具,以提高效率和处理这些数据所需的时间。在处理完成之后,用户可以通过hive对用户的学历进行查询,根据自己的需要,可以根据职位、学历、工作年限等限定条件来查询,大大地提高了查询精度,也让招聘和人事等相关部门的工作变得更加轻松便捷。 总的来说,该项目成功运用了hive技术,实现了用户学历查询的目标,提升了工作效率和数据查询的准确度。而且此次项目的经验和教训也可以为其他公司和企业在hive技术的运用方面提供借鉴和参考。 ### 回答3: Hive是Hadoop生态系统中的一项重要技术,它是基于Hadoop的MapReduce框架的数据仓库解决方案,可以进行大规模数据的存储和处理。而学历查询是一个典型的数据查询场景,由于学历查询需要对大量的数据进行快速高效的查询和分析,因此使用Hive进行学历查询可以大大提高查询效率和数据处理能力。 以学历查询为例,如果我们需要查询某个区域内所有人的学历情况,我们需要从海量的数据中筛选出相关的信息,然后进行分析和统计,这个过程需要耗费大量的时间和精力。但是如果使用Hive,我们可以通过HiveSQL查询语句来快速实现数据查询和分析。 具体来说,如果我们要查询一个城市的所有居民的学历情况,首先要准备好相应的数据表或数据集,然后利用Hive的相关命令将数据导入到Hive表中。在数据导入完成后,我们可以使用类似于SQL的语句来实现查询。例如,我们可以使用Hive的SELECT语句和GROUP BY语句来实现按学历等级进行分组并统计各组的人数。 当然,如果需要更加复杂的查询和分析任务,我们也可以使用Hive进行更多的数据处理和计算任务。例如,Hive支持使用自定义的UDF函数,可以对数据实现更加灵活和精细化的处理。 总而言之,Hive作为一种分布式数据存储和查询解决方案,可以为学历查询等数据处理场景提供快速、高效和可扩展的解决方案。通过合理的数据分析和查询,可以帮助我们更好地了解数据背后的真相,为业务决策提供更多有效的参考和支持。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值