IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> HIVE 多表关联的顺序 -> 正文阅读

[大数据]HIVE 多表关联的顺序

多表关联顺序的问题

当多张表进行关联的时候,既有 LEFT JOIN,又有 JOIN,此时的关联顺序是如何进行的,假设我们有三张表,数据如下:

① 用户信息表

-- 用户信息表
create table if not exists user_temp
(
    user_id string comment '用户ID',
    user_name string comment '用户姓名',
    emp_id string comment '部门ID'
)
comment '客户信息表'
partitioned by (ds string)
stored as orc tblproperties ('orc.compress'='SNAPPY')
;

在这里插入图片描述
② 公司部门表

-- 部门表
create table if not exists emp_temp
(
    emp_id string comment '部门ID',
    emp_name string comment '部门名称'
)
comment '部门信息表'
partitioned by (ds string)
stored as orc tblproperties ('orc.compress'='SNAPPY')
;

在这里插入图片描述

③ 用户订单表

-- 订单表
create table if not exists order_temp
(
    user_id string comment '用户ID',
    order_id string comment '订单ID',
    order_name string comment '订单名称'
)
comment '订单信息表'
partitioned by (ds string)
stored as orc tblproperties ('orc.compress'='SNAPPY')
;

在这里插入图片描述

多表关联的顺序

① 需求描述

展示当前 A、B、D 部门的用户的订单详情,需要包含的字段有:用户ID、用户姓名、部门号、部门名称、用的订单号、订单名称

② 需求分析(只讨论关联顺序,不需要对需求本身过多讨论)

先通过用户表和部门表关联,剔除不存在的部门,此时获取到的用户只有:ABD 部门用户

将上一步结果和订单表做关联,有订单的则关联到订单数据,没订单则关联到的数据为 NULL

SELECT  t1.user_id
       ,t1.user_name
       ,t2.emp_id
       ,t2.emp_name
       ,t3.order_id
       ,t3.order_name
FROM
(
    SELECT  user_id
           ,user_name
           ,emp_id
    FROM user_temp
    WHERE ds = '20220222' 
) t1
JOIN
(
    SELECT  emp_id
           ,emp_name
    FROM emp_temp
    WHERE ds = '20220222' 
) t2
ON t1.emp_id = t2.emp_id
LEFT JOIN
(
    SELECT  user_id
           ,order_id
           ,order_name
    FROM order_temp
    WHERE ds = '20220222' 
) t3
ON t1.user_id = t3.user_id 
;

在这里插入图片描述
③ 多表关联的顺序的结论

HIVE 的关联书序从上到下依次执行,例如三张表 t1、t2、t3 依次关联,则按照关联顺序依次执行

HIVE 会对每个 JOIN 连接对象启动一个 MapReduce 任务,上面的列子首先会启动一个MapReduce 任务对表 t1 和表 t2 进行连接操作,然后会再启动一个 MapReduce 任务将第一个 MapReduce 任务的输出和表 t3 进行连接操作

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-03-03 16:21:05  更:2022-03-03 16:22:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 10:44:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码