Apache Hive--join 操作| 学习笔记

简介: 快速学习 Apache Hive--join 操作

开发者学堂课程【大数据 Hive 教程精讲Apache Hive--join操作】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/90/detail/1379


Apache Hive--join操作

 

Hive join

Hive 中除了支持和传统数据库中一样的内关联、左关联、右关联、全关联,还支持LEFTSEMI JOIN CROSS JOIN,但这两种 JOIN 类型也可以用前面的代替。

Hive支持等值连接(a.id=b.id),不支持非等值(a.id>b.id)的连接,因为非等值连接非常难转化到 map/reduce 任务。另外,Hive 持多2个以上表之间的join

 

join 查询时,需要注意几个关键点:

l  join 时,每次 map/reduce 任务的逻辑;

reducer会缓存join序列中除了最后一个表的所有表的记录,再通过最后一个表将结果序列化到文件系统。这一实现有助于在 reduce 端减少内存的使用量。实践中,应该把最大的那个表写在最后(否则会因为缓存浪费大量内存)

l  LEFTRIGHT FULL OUTER 关键字用于处理 join 中空记录的情况

SELECT a.val, b.val FROM a LEFT OUTER JOIN b ON (a.key=b.key)

对应所有a表中的记录都有一条记录输出。输出的结果应该是 a.valb.val,当a.key=b.key时,而当 b.key 中找不到等值的 a. key 记录时也会输出:

a. valNULL

1.png

2.png**hive 中的特别 join

select * from a left semi join b on a.id = b.id;

3.png

相当于

select a.id,a.name from a where a.id in (select b.id from b);hive中效率极低

select a.id, a.name from a join b on (a.id = b.id);

select * from a inner join b on a.id=b.id;

cross join (##慎用)

返回两个表的笛卡尔积结果,不需要指定关联键

select a.*,b.* from a cross join b;

相关文章
|
3月前
|
Java API Apache
使用 Apache PDFBox 操作PDF文件
Apache PDFBox库是一个开源的Java工具,专门用于处理PDF文档。它允许用户创建全新的PDF文件,编辑现有的PDF文档,以及从PDF文件中提取内容。此外,Apache PDFBox还提供了一些命令行实用工具。
103 6
|
4月前
|
Linux 网络安全 Apache
Centos下操作Apache httpd
Centos下操作Apache httpd
70 0
|
6月前
|
分布式计算 Hadoop 大数据
大数据Hadoop之——Apache Hudi 数据湖实战操作(Spark,Flink与Hudi整合)
大数据Hadoop之——Apache Hudi 数据湖实战操作(Spark,Flink与Hudi整合)
|
1月前
|
SQL 数据可视化 Apache
阿里云数据库内核 Apache Doris 兼容 Presto、Trino、ClickHouse、Hive 等近十种 SQL 方言,助力业务平滑迁移
阿里云数据库 SelectDB 内核 Doris 的 SQL 方言转换工具, Doris SQL Convertor 致力于提供高效、稳定的 SQL 迁移解决方案,满足用户多样化的业务需求。兼容 Presto、Trino、ClickHouse、Hive 等近十种 SQL 方言,助力业务平滑迁移。
阿里云数据库内核 Apache Doris 兼容 Presto、Trino、ClickHouse、Hive 等近十种 SQL 方言,助力业务平滑迁移
|
1月前
|
SQL JSON 算法
hive学习笔记
hive学习笔记
|
1月前
|
SQL 分布式计算 Java
Apache Hudi与Hive集成手册
Apache Hudi与Hive集成手册
73 0
|
6月前
|
SQL 关系型数据库 MySQL
怎么使用 Go 语言操作 Apache Doris
怎么使用 Go 语言操作 Apache Doris
354 0
|
7月前
|
SQL 关系型数据库 MySQL
Hive报错:HiveException java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.me
Hive报错:HiveException java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.me
151 0
|
3月前
|
SQL 分布式计算 安全
HIVE启动错误:org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.server.namenode.SafeModeExcept
HIVE启动错误:org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.server.namenode.SafeModeExcept
138 0
|
3月前
|
消息中间件 Java Kafka
Apache Kafka-初体验Kafka(04)-Java客户端操作Kafka
Apache Kafka-初体验Kafka(04)-Java客户端操作Kafka
31 0

推荐镜像

更多