Hive-表连接
Hive只支持等值连接,即ON子句中使用等号连接,不支持非等值连接。
Hive内置的数据存储类型,TextFile, SequenceFile, ORC(列式存储)
如果连接语句中有WHERE子句,会先执行JOIN子句,再执行WHERE子句。[吴超1]
假设有以下测试数据
表user数据如下
|
User_id |
name |
|
1 |
张三 |
|
2 |
李四 |
|
3 |
王五 |
表job数据如下
|
Job_id |
job |
user_id |
|
1 |
工程师 |
1 |
|
2 |
美工 |
2 |
|
3 |
美工 |
4 |
建表语句如下
CREATE TABLE IF NOT EXISTS user(id int, name string) ROW FORMATDELIMITED FIELDS TERMINATED BY ‘\t’;
CREATE TABLE IF NOT EXISTS job(id int, job string, user_id int) ROWFORMAT DELIMITED FIELDS TERMINATED BY ‘\t’;
10.1.1. 内连接
内连接指的是把符合两边连接条件的数据查询出来。
执行以下语句
select * from user join job on user.id=job.user_id;
结果如下
10.1.2. 左外连接
左外连接:左边有,右边如果没有数据,那么为空。
执行以下语句
select * from user left outer join job on user.id=job.user_id;
不能使用let join,只能使用left outerjoin。结果如下
10.1.3. 右外连接
执行以下语句
select * from user right outer join job on user.id=job.user_id;
结果如下
10.1.4. 全外连接
执行以下语句
select * from user full outer join job on user.id=job.user_id;
结果如下
10.1.5. 左半连接
执行以下语句,左半连接用来代替in操作或者exists操作的
select * from user left semi join job on user.id=job.user_id;
结果如下
该语句相当于如下语句
select * from user where id in (select user_id from job);
但是,hive不支持in子句。所以只能变通,使用left semi子句。
参考链接:http://blog.csdn.net/woshisap/article/details/43422423
Hive-表连接的更多相关文章
- Hive的join表连接查询的一些注意事项
Hive支持的表连接查询的语法: join_table: table_reference JOIN table_factor [join_condition] | table_reference {L ...
- 导hive表项目总结(未完待续)
shell里面对日期的操作 #!/bin/bash THIS_FROM=$(date +%Y%m%d -d "-7 day") THIS_TO=$(date +%Y-%m-%d - ...
- 大数据开发实战:Hive表DDL和DML
1.Hive 表 DDL 1.1.创建表 Hive中创建表的完整语法如下: CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name [ (col_nam ...
- hive表增量抽取到oracle数据库的通用程序(一)
hive表增量抽取到oracle数据库的通用程序(二) sqoop在export的时候 只能通过--export-dir参数来指定hdfs的路径.而目前的需求是需要将hive中某个表中的多个分区记录一 ...
- hive 表优化
一.外部表和内部表的区别 (1)创建表时指定external关键字,就是外部表,不指定external就是内部表 (2)内部表删除后把元数据和数据都删除了,外部表删除后只是删除了元数据,不会删除hdf ...
- hive表数据导出到csv乱码原因及解决方案
转载自http://blog.csdn.net/lgdlxc/article/details/42126225 Hive表中的数据使用hive - e"select * from table ...
- flume的sink写入hive表
flume的配置文件如下: a1.sources=r1 a1.channels=c1 a1.sinks=s1 a1.sources.r1.type=netcat a1.sources.r1.bind= ...
- Hive 表操作(HIVE的数据存储、数据库、表、分区、分桶)
1.Hive的数据存储 Hive的数据存储基于Hadoop HDFS Hive没有专门的数据存储格式 存储结构主要包括:数据库.文件.表.试图 Hive默认可以直接加载文本文件(TextFile),还 ...
- SQL多表连接查询(详细实例)
转载博客:joeleo博客(http://www.xker.com/page/e2012/0708/117368.html) 本文主要列举两张和三张表来讲述多表连接查询. 新建两张表: 表1:stud ...
- 关于Oracle表连接
表连接注意left join on与where的区别: select * from dept; select * from emp; select * from emp a right outer j ...
随机推荐
- UVa 11270 铺放骨牌(轮廓线DP)
https://vjudge.net/problem/UVA-11270 题意: 用1×2骨牌覆盖n×m棋牌,有多少种方法? 思路: 这道题目是典型的轮廓线DP题. 所谓轮廓线DP,就是以整行整列为状 ...
- thinkphp3.2笔记(3)视图渲染 模板的赋值与显示 系统变量
一 视图 1 视图渲染 渲染模板输出最常用的是使用display方法,调用格式:display('[模板文件]'[,'字符编码'][,'输出类型'])模板文件的写法支持下面几种:用法 描述不带任何 ...
- ping 原理与ICMP协议[转]
原文:http://blog.csdn.net/inject2006/article/details/2139149 ping 的原理 ping 程序是用来探测主机到主机之间是否可通信,如果不 ...
- 秒转为时分秒格式js
秒转为时分秒格式 function formatSeconds(value) { if(value == undefined) { value = 0; } var second = parseInt ...
- SNMP:使用net-snmp捕捉trap
管理端:172.18.0.135 win7系统 代理端:172.18.0.212 Debian7.2 前提:代理端已配置snmp,可正常实现用SNMP协议实现系统信息监控 1.管理端下 ...
- Arrays.copyof(···)与System.arraycopy(···)区别
首先观察先System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length)的声明: public stati ...
- windows使用git记录
1.免密码clone远程服务器代码开启ssh 生成私钥公钥 命令:查看自己配置的邮箱 git config user.name git config user.email 生成密钥:邮箱填写上面查看出 ...
- 5G RRC——为NAS层提供连接管理,消息传递等服务; 对接入网的底层协议实体提供参数配置的功能; 负责UE移动性管理相关的测量、控制等功能
from:http://www.cnblogs.com/kkdd-2013/p/3868676.html 1 RRC协议功能 为NAS层提供连接管理,消息传递等服务: 对接入网的底层协议实体提供参数配 ...
- 获取div的高度
1.获取div的文档总高度(必须DOM操作): var scrollHeight=document.getElementById("inner").scrollHeight; // ...
- Laravel框架 -- Validator 可用的验证规则
accepted 字段值为 yes, on, 或是 1 时,验证才会通过.这在确认"服务条款"是否同意时很有用. active_url 字段值通过 PHP 函数 checkdnsr ...