hive之full outer join(全连接)使用方法

2023-10-27

目录

介绍

语法

例子

创建顾客表:customers

创建订单表:orders

?full outer join语句

? left join + union + right join语句


介绍

full outer join结合了 LEFT JOIN 和 RIGHT JOIN 的结果,并使用NULL值作为两侧缺失匹配结果。

语法

SELECT 
    table1.column_name(s),table2.column_name(s) 
FROM table1 
    FULL OUTER JOIN table2 
ON table1.column_name = table2.column_name;

相当于:left join + union + right join

SELECT 
    table1.column_name(s),table2.column_name(s)
FROM table1 
    LEFT OUTER JOIN table2 
ON table1.column_name = table2.column_name;
UNION
SELECT 
    table1.column_name(s),table2.column_name(s)
FROM table1 
    RIGHT OUTER JOIN table2 
ON table1.column_name = table2.column_name;

例子

创建顾客表:customers

CREATE TABLE `default.customers`(
  `customer_id` varchar(25) COMMENT '顾客id',
  `customer_name` varchar(25) COMMENT '顾客姓名',
  `customer_age` varchar(25) COMMENT '顾客年龄')
PARTITIONED BY ( 
  `date_time` string)
ROW FORMAT SERDE 
  'org.apache.hadoop.hive.ql.io.orc.OrcSerde' 
STORED AS INPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat'
LOCATION
  'hdfs://master:9000/user/hive/warehouse/default.db/customers'

插入数据

insert into table default.customers partition(date_time='2022-04-01')
select '1','zhangsan','22'
union all
select '2','lisi','34' 
union all
select '3','wangwu','21' 
union all
select '7','zhaoliu','33' 
union all
select '9','liuqi','44' 

创建订单表:orders

CREATE TABLE `default.orders`(
  `order_id` varchar(25) COMMENT '订单id', 
  `customer_id` varchar(25) COMMENT '顾客id', 
  `order_date` varchar(25) COMMENT '订单日期')
PARTITIONED BY ( 
  `date_time` string)
ROW FORMAT SERDE 
  'org.apache.hadoop.hive.ql.io.orc.OrcSerde' 
STORED AS INPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat'
LOCATION
  'hdfs://master:9000/user/hive/warehouse/default.db/orders'

插入数据

insert into table default.orders partition(date_time='2022-04-01')
select '1','1','2022-04-01'
union all
select '2','2','2022-03-01' 
union all
select '3','3','2022-03-02' 
union all
select '4','4','2022-03-03' 
union all
select '5','5','2022-03-02' 
union all
select '6','6','2022-03-03'

full outer join语句

select a.customer_id,a.customer_name,a.customer_age,b.order_id,b.order_date from default.customers a
full outer join default.orders b
on a.customer_id=b.customer_id

结果

left join + union + right join语句

select a.customer_id,a.customer_name,a.customer_age,b.order_id,b.order_date from default.customers a
left join default.orders b
on a.customer_id=b.customer_id
union 
select a.customer_id,a.customer_name,a.customer_age,b.order_id,b.order_date from default.customers a
right join default.orders b
on a.customer_id=b.customer_id

结果

可以看出结果是一摸一样的。


结语

本次的分享就到这里了,下一篇博客博主将带来hive之left semi join(左半连接)使用方法,敬请期待!受益的朋友或对大数据技术感兴趣的伙伴记得点赞关注支持一波!

最后

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

小编已加密:aHR0cHM6Ly9kb2NzLnFxLmNvbS9kb2MvRFVrVm9aSGxQZUVsTlkwUnc==出于安全原因,我们把网站通过base64编码了,大家可以通过base64解码把网址获取下来。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

hive之full outer join(全连接)使用方法 的相关文章

随机推荐

  • 爬取去哪儿酒店信息及评论

    爬取去哪儿酒店信息及评论 第一步 获取城市列表 import requests import json import codecs 去哪儿城市列表 url https touch qunar com h api hotel hotelcit
  • setPlainText

    QString toPlainText const void setPlainText const QString text setPlainText 顾名思义 是设置纯文本的 而setText 参数除了可以设置为纯文本之外 还可以设置为一
  • js随手笔记之一 存储之cookies

    概念 什么是cookie 全称 HTTP Cookie 最初是用于客户端存储回话信息的 cookie在性质上是绑定在特定的域名下 当设定一个cookie后再给创建它的域名发送请求时 都会包含这个cookie cookie的作用是什么 1 当
  • 数论整理之特殊数three:142857

    不重要的一篇文章 走马数 142857 1 142857 原数字 142857 2 285714 轮值 142857 3 428571 轮值 142857 4 571428 轮值 142857 5 714285 轮值 142857 6 85
  • vant中获取tab标签页的元素

    问题 vant框架中想要获取标签元素但又发现直接用 click和 change传id都无效 那应该怎么做呢 解决 在van tabs标签上顶一个点击事件 给van tab的name属性绑定一个唯一的值 然后将name作为参数传给该事件即可
  • 单例模式之懒汉式

    在上篇文章中 我们讲了单例模式中的饿汉式 今天接着来讲懒汉式 1 懒汉式单例模式的实现 public class LazySingleton private static LazySingleton instance null 让构造函数为
  • 前端八股文——javascript中Array⽅法总结

    Array方法 1 创建数组 1 1 Array from 1 2 Array of 方法 1 3 sort 排序函数原理 1 4 copyWithin 1 5 find 1 6 findIndex 2 对原数组有影响 2 1 push 2
  • Face++人工智能开放平台、百度AI、腾讯优图平台比较

    平台整体展示 百度AI平台展示了产品服务 解决方案 案例场景 资源中心 合作伙伴 AI加速器 资讯 社区板块 百度AI平台战略的两大核心是阿波罗Apollo平台和DuerOS对话式人工智能系统 阿波罗致力于汽车行业开发和自动驾驶领域的合作
  • Vue.js:Select--Option >下拉框绑定和取值

    遇到了这个解决了 所以记录一下 1 Vue js 2 https www iviewui com components select 完成vue js下拉框选择绑定与取值 实现效果图如下 template代码
  • Kafka 问答小结

    什么是消息中间件 消息中间件是基于队列与消息传递技术 在网络环境中为应用系统提供同步或异步 可靠消息传输的支撑性软件系统 消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流 并基于数据通信来进行分布式系统的集成 通过提供消息传递和消
  • 数字化时代-21:入住CSDN 2个月进展报告

    摘要 入住CSDN2个月进展报告 积分 461 1311 等级 1级别 4 级 排名 20万 7万 访问量 8950 24739 2 每周文章变化 3 每周访问量变化 4 每周访问总重量变化 5 每周粉丝总计变化 6 总积分变化
  • 【MySQL】免安装版MySQL安装教程

    前言 近日 重新安装了一下本地的数据库 参考了很多博客才将MySQL给安装好 为了方便以后安装 便结合了网上博客的安装方法以及自己的一些经验写下这篇博客 也希望能给你们带来帮助 一 MySQL是什么 MySQL 是一个关系型数据库管理系统
  • docker配置seata分布式事务并注册至nacos

    Docker配置分布式事务Seata并注册到Nacos服务中心 Docker常用基础命令 docker ps 查询当前服务器的服务 docker images 查看服务下载的镜像 docker ps a 查看所有的服务 包含未开启的服务 d
  • 【Protobuf(四)】消息格式

    protobuf是一种平台语言无关的消息序列化协议 相比于传统的json xml 序列后的空间更小 但是无法自解释 需要结合额外的proto定义文件才能反序列化 当然这样也更安全 下面记录一下protobuf消息格式 protobuf消息序
  • 统计与分布之伯努利分布与二项分布

    目录 目录 前文列表 伯努利分布 二项分布 前文列表 计数原理 组合与排列 统计与分布之高斯分布 统计与分布之泊松分布 伯努利分布 伯努利分布 Bernoulli Distribution 是一种离散分布 又称为 0 1 分布 或 两点分布
  • 测试用例编写

    今天主要编写了办公模块下快速创建板块中的测试用例 快速创建提日志 多个功能点钟含有相同的功能 而且功能以模块的形式呈现 包含的功能较多 可以把该模块提取出来单独编写测试用例 这样就不用再每个功能点下重复编写 在快速创建日志中 日报 周报 月
  • The kdb Kernel Debugger

    The kdb Kernel Debugger Many readers may be wondering why the kernel does not have any more advanced debugging features
  • leetcode:62. 不同路径

    题目来源 leetcode 题目描述 题目解析 从暴力搜索到动态规划 暴力搜索 class Solution 机器人从 i j 走到 m n 一共有几种方法 int process int i int j int m int n if i
  • ASP + SQL Server聊天室设计实例

    ASP SQL Server聊天室设计实例 目 录 第一章 绪论 1 1 设计思想 1 2 开发工具和相关技术简介 第二章 聊天室总体分析和设计 2 1 聊天室的运行原理 2 2 聊天室的功能 2 3 聊天室的页面结构设计 2 4 聊天室的
  • hive之full outer join(全连接)使用方法

    目录 介绍 语法 例子 创建顾客表 customers 创建订单表 orders full outer join语句 left join union right join语句 介绍 full outer join结合了 LEFT JOIN