建表语句:

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. SpringAOP日志配置

    SpringAOP日志配置 配置文件配置 l  配置spring-mvc.xml <aop:config proxy-target-class="true" /> &l ...

  2. 31.Mysql复制

    31.Mysql复制复制是指将主数据库的DDL和DML操作通过二进制日志传到从数据库上,然后在从数据库上对重做日志,从而使从库与主库保持同步.Mysql支持一台主库同时向多台从库复制,从库也可以作为其 ...

  3. linux下面重启apche 与mysql服务

    1.service httpd restart 重启apache 2.service mysqld restart 重启mysql 开启与停止换成start与stop即可

  4. window 安装mysql

    常见错误:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 密码输入错误:无法远程 ...

  5. 利用python监测linux上的服务(简单实现服务宕掉自动发送邮件)

    python 这里用到了四个python 模块 : import time (时间模块) import re (正则模块) import socket (监测端口模块)import yagmail ( ...

  6. IOS内存管理详解

    一.    基本原理 1.        什么是内存管理 移动设备的内存极其有限,每个app所能占用的内存是有限制的 当app所占用的内存较多时,系统会发出内存警告,这时得回收一些不需要再使用的内存空 ...

  7. java生成pdf文件 --- Table

    Java利用itext实现导出PDF文件 所需要的jar包:com.lowagie.text_2.1.7.v201004222200.jar jar包下载地址:http://cn.jarfire.or ...

  8. python模块:configparser

    """Configuration file parser. A configuration file consists of sections, lead by a &q ...

  9. SSM_CRUD新手练习(8)搭建BootStrap分页页面

      经过Spring单元测试模拟请求,我们能够成功的取出数据,接下来,我们就开始写用来显示查询数据的分页页面吧. 我们使用Bootstrap来帮助我们快速开发漂亮的页面,具体怎么用可以查看Bootst ...

  10. 调用opencv相关函数,从视频流中提取出图片序列&&&&jpg图片序列,转化成avi格式视频

    /************************ @HJ 2017/3/30 参考http://blog.sina.com.cn/s/blog_4b0020f301010qcz.html修改的代码 ...