建表语句:

create table  tb_in_base
(
   id  bigint,
   devid bigint,
    devname string 
) partitioned by (job_time bigint) row format delimited fields terminated by ',';
 
create table  tb_in_up
(
   id  bigint,
   devid bigint,
   devname string 
) partitioned by (job_time bigint) row format delimited fields terminated by ',';
场景一:单表子查询没有指定表别名
语句:select * from (select id,devid,job_time from tb_in_base) ;

执行过程:

提示需要指定子查询源。
加上表别名:
语句:select * from (select id,devid,job_time from tb_in_base) a;
执行过程:

加了表别名后可以正常输出子查询中的数据。
结果分析:在hive中若有子查询必须指定子查询的表别名
场景二:单表查询外围字段比子查询少一个
语句: select id,devid from (select id,devid,job_time from tb_in_base) a; 
执行过程:

结果分析:输出外围指定字段的数据 。
场景三:两张表进行union all
语句:
 select a.id,a.devid from (select a.id,a.devid,a.job_time from tb_in_base a union all select b.id,b.devid,b.job_time from tb_in_up b) a;
执行过程:

结果分析:两张表进行union all 取相同的字段名称,可正常输出指定数据内容,且结果为两张表的结果集
场景四:两张表进行union 
 
语句:
 
 select a.id,a.devid from (select a.id,a.devid,a.job_time from tb_in_base a union all select b.id,b.devid,b.job_time from tb_in_up b) a;
 
执行过程:

结果分析:hive 不支持union

场景五:外围使用count、sum 统计id 
语句:
select count(a.id),sum(a.id)  from (select a.id,a.devid,a.job_time from tb_in_base a union all select b.id,b.devid,b.job_time from tb_in_up b) a;
执行过程:

结果分析:两表直接进行union all 可以使用count、sum 等聚合函数 
 
场景六:union all 时使用count、sum 、max等 聚合函数

结果分析:union all 时不能使用count、sum 、max等 聚合函数,单表可以进行聚合函数使用,如下图

场景七:left join 是否可以使用max、count、sum 等函数 
语句:
select max(a.id),min(b.id),sum(a.job_time),count(a.id) from tb_in_base a join tb_in_up b on (a.id=b.id);
执行过程:

结果分析:在left join 中可以使用max、count等聚合函数。
总结分析
1. 子查询相当于表名,使用 from 关键字需要指定真实表名或表别名。
2. hive 不支持union ,只支持union all 
3. 子查询中使用union all 时,在子查询里不能使用count、sum 等 聚合函数 
4. 两表直接进行union all 可以使用count、sum 等聚合函数 
5. 两张表进行union all 取相同的字段名称,可正常输出指定数据内容,且结果为两张表的结果集

Hive的union和join操作的更多相关文章

  1. 08_Hive中的各种Join操作

    1.关于hive中的各种join Hive中有许多的Join操作,例如:LEFT.RIGHT和FULL OUTER JOIN,INNER JOIN,LEFT SEMI JOIN等: 1.1.准备两组数 ...

  2. hive:join操作

    hive的多表连接,都会转换成多个MR job,每一个MR job在hive中均称为Join阶段.按照join程序最后一个表应该尽量是大表,因为join前一阶段生成的数据会存在于Reducer 的bu ...

  3. [Hive_add_5] Hive 的 join 操作

    0. 说明 在 Hive 中进行 join 操作 1. 操作步骤 1.0 建表 在 hiveserver2 服务启动的前提下,在 Beeline客户端中输入以下命令 # 新建顾客表 create ta ...

  4. hive中的子查询改join操作(转)

    这些子查询在oracle和mysql等数据库中都能执行,但是在hive中却不支持,但是我们可以把这些查询语句改为join操作: -- 1.子查询 select * from A a where a.u ...

  5. Hive的三种Join方式

    Hive的三种Join方式 hive Hive中就是把Map,Reduce的Join拿过来,通过SQL来表示. 参考链接:https://cwiki.apache.org/confluence/dis ...

  6. 使用MapReduce实现join操作

     在关系型数据库中,要实现join操作是非常方便的,通过sql定义的join原语就可以实现.在hdfs存储的海量数据中,要实现join操作,可以通过HiveQL很方便地实现.不过HiveQL也是转化成 ...

  7. MapReduce 实现数据join操作

    前段时间有一个业务需求,要在外网商品(TOPB2C)信息中加入 联营自营 识别的字段.但存在的一个问题是,商品信息 和 自营联营标示数据是 两份数据:商品信息较大,是存放在hbase中.他们之前唯一的 ...

  8. Hive常用的SQL命令操作

    Hive提供了很多的函数,可以在命令行下show functions罗列所有的函数,你会发现这些函数名与mysql的很相近,绝大多数相同的,可通过describe function functionN ...

  9. Hive优化-大表join大表优化

    Hive优化-大表join大表优化 5.大表join大表优化 如果Hive优化实战2中mapjoin中小表dim_seller很大呢?比如超过了1GB大小?这种就是大表join大表的问题.首先引入一个 ...

随机推荐

  1. Dubbo helloword

    首先,开始编写服务提供者的api接口, SampleService  接口 package bhz.dubbo.sample.provider; import java.util.List; publ ...

  2. Head First Servlets & JSP 学习笔记 第九章 —— 使用JSTL

    JSTL1.1 不是JSP2.0规范的一部分!你能访问Servlet和JSP API 不意味着你能访问JSTL! 使用JSTL之前,需要将两个文件("jstl.jar" 和 &qu ...

  3. abp Cannot access a disposed object. A common cause of this error is disposing

    框架:abp 异常信息: An unhandled exception was thrown by the application.System.ObjectDisposedException: Ca ...

  4. jsp相关笔记(三)

    在往数据库的表中写入数据时,一定要与表中的每一项对应,比如表中有三项,则写入的值也应该是三类: String getTitle=request.getParameter("title&quo ...

  5. MySQL优化(三) 表的设计

    1.什么样的表才符合3范式(3 NF)? 表的范式,是首先符合1范式,才能满足2范式,进一步才能满足3范式:(现在最高级别是6范式) 第一范式:1NF 是对属性的原子性约束,要求表的属性(列)具有原子 ...

  6. WEB框架本质和第一个Django实例

    Web框架本质 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端. 这样我们就可以自己实现Web框架了. 总的来说:Web框架的本质就是浏览 ...

  7. vuex 中五大核心以及map函数的应用

    什么是vuex? 我理解的vuex就是数据和状态的管理 如果在模块化构建系统中,请确保在开头调用了 Vue.use(Vuex) 五大核心: const store = new Vuex.Store({ ...

  8. 微信小程序开发 - 用户授权登陆

    准备:微信开发者工具下载地址:https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html 微信小程序开发文档:htt ...

  9. poj1860

    刚上来一堆英文着实有点蒙逼,仔细分析是一个Bellman的变形,只要能找出一个无限增大的环这个题就好解决了,我这里用的SPFA,用邻接链表进行储存,直接套用的模板,部分变量名字没有改的很好 #incl ...

  10. python 更换 版本

    这是一个悲伤的安装ipython的过程. 写下来留个教训吧. 也是希望对博友一些帮助吧. 注: 我也写了一篇window下安装bpython的文章(个人感觉bpython要比ipython强大的多), ...