- 浏览: 772080 次
- 性别:
- 来自: 广州
文章分类
最新评论
本文转自:http://www.cnblogs.com/ggjucheng/archive/2013/01/03/2842855.html
当前hive不支持 in或not in 中包含查询子句的语法,所以只能通过left join实现。
假设有一个登陆表login(当天登陆记录,只有一个uid),和一个用户注册表regusers(当天注册用户,字段只有一个uid),这两个表都包含一个字段,uid。
in查询
如果要查询当天登陆的注册用户,需要用in查询,hive sql如下:
select login.uid from login left outer join regusers on login.uid=regusers.uid where regusers.uid is not null
如果login表和regusers表按天分区,字段是dt,那么查询2013年1月1号当天登陆的注册用户,hive sql如下:
select login.uid from login day_login left outer join
(select uid from regusers where dt='20130101') day_regusers
on day_login.uid=day_regusers.uid where day_login.dt='20130101' and day_regusers.uid is not null
not in查询
如果要查询当天登陆的老用户(这里假设非当天注册用户就是老用户),需要用not in查询,hive sql如下:
select login.uid from login left outer join regusers on login.uid=regusers.uid where regusers.uid is null;
如果login表和regusers表按天分区,字段是dt,那么查询2013年1月1号当天登陆的老用户,hive sql如下:
select login.uid from login day_login left outer join
(select uid from regusers where dt='20130101') day_regusers
on day_login.uid=day_regusers.uid where day_login.dt='20130101' and day_regusers.uid is null;
当前hive不支持 in或not in 中包含查询子句的语法,所以只能通过left join实现。
假设有一个登陆表login(当天登陆记录,只有一个uid),和一个用户注册表regusers(当天注册用户,字段只有一个uid),这两个表都包含一个字段,uid。
in查询
如果要查询当天登陆的注册用户,需要用in查询,hive sql如下:
select login.uid from login left outer join regusers on login.uid=regusers.uid where regusers.uid is not null
如果login表和regusers表按天分区,字段是dt,那么查询2013年1月1号当天登陆的注册用户,hive sql如下:
select login.uid from login day_login left outer join
(select uid from regusers where dt='20130101') day_regusers
on day_login.uid=day_regusers.uid where day_login.dt='20130101' and day_regusers.uid is not null
not in查询
如果要查询当天登陆的老用户(这里假设非当天注册用户就是老用户),需要用not in查询,hive sql如下:
select login.uid from login left outer join regusers on login.uid=regusers.uid where regusers.uid is null;
如果login表和regusers表按天分区,字段是dt,那么查询2013年1月1号当天登陆的老用户,hive sql如下:
select login.uid from login day_login left outer join
(select uid from regusers where dt='20130101') day_regusers
on day_login.uid=day_regusers.uid where day_login.dt='20130101' and day_regusers.uid is null;
发表评论
-
hive常见优化问题汇总
2016-04-11 11:20 6104一、总体思想 http://blog.csdn.net/ ... -
hive-数据倾斜解决详解
2016-04-11 11:11 8627hive在跑数据时经常会出现数据倾斜的情况,使的作业经常r ... -
抽样类型详细说明
2016-03-24 10:41 2646抽样的类型 根据 ... -
hive配置详解
2016-03-18 10:48 1258hive中有许多配置将帮 ... -
hive打开调试信息方法
2016-03-17 17:53 991当用hive查询时,有时可能会报错,当要查看详细的报错信息时 ... -
set hive.groupby.skewindata与数据倾斜
2016-03-16 10:03 12244hive和其它关系数据库一样,支持count(distinc ... -
hive:[Fatal Error] Operator FS_14 (id=14): Number of dynamic partitions exceeded
2016-03-10 10:44 1051向动态分区时,报错:hive:[Fatal Error] O ... -
Hive中Join的原理和机制
2016-01-22 20:36 885Hive中Join的原理和机制 笼统的说,Hive中的J ... -
hive 随机抽样
2016-01-22 20:23 145191. Random sampling 使用RAND()函 ... -
hive 分组取每个组中的top N条记录
2016-01-22 10:00 0SELECT id, rate, score FROM ( ... -
hive文件合并方法
2015-12-26 17:40 4270当Hive输入由很多个小 ... -
hive 查看一个表的总文件大小方法
2015-11-12 18:02 14265要查看一个hive表文件总大小时,我们可以通过一行脚本快速 ... -
hive 行转列和列转行的方法
2015-11-06 19:56 20273一、行转列的使用 1、问题 hive如何将 a ... -
hive array、map、struct使用
2015-11-06 19:40 2019hive提供了复合数据类型:Structs: structs ... -
hive with查询用法及CTAS的使用
2015-11-04 17:48 10560hive 可以通过with查询来提高查询性 ... -
hive创建表是报错: Specified key was too long; max key length is 767 bytes
2015-07-13 09:19 3677今天在hive客户端创建表时报错,具体操作如下 h ... -
hive having count 不能去重
2015-07-03 11:10 7519hive在使用having count()是,不支持去重计 ... -
Hive分析窗口函数 LAG,LEAD,FIRST_VALUE,LAST_VALUE
2015-05-25 10:37 9954问题导读1.LAG功能是什么?2.LEAD与LAG功能 ... -
Hive几种导出数据方式
2015-05-11 21:31 2207Hive几种导出数据方式 1.拷贝 ... -
hive 客户端查询报堆内存溢出解决方法
2015-03-25 21:32 5460hive> select * from t_test ...
相关推荐
用户Java对于hive的实例操作,帮助更好地加深对hive语句的理解
部分普通sql查询在hive中的实现方式详细说明;
Hive原理与实现 详细介绍了hive的原理
JDBC连接hive,用JD连接hive。
关于Exists,not Exists.in ,not in效率的说明。关于Exists,not Exists.in ,not in效率的说明。关于Exists,not Exists.in ,not in效率的说明。关于Exists,not Exists.in ,not in效率的说明。关于Exists,not Exists.in...
hive udaf 实现按位取与或 hive udaf 实现按位取与或 hive udaf 实现按位取与或
使用javaJDBC连接hive数据,实现简单的操作!
java操作Hive源码之HiveJDBC实例(mysql数据库),附带所需jar包,欢迎下载学习。
HIVE-分桶表的详解和创建实例.docx
Scala代码积累之spark streaming kafka 数据存入到hive源码实例,Scala代码积累之spark streaming kafka 数据存入到hive源码实例。
hive练习数据和hive练习题包含了hive练习数据,hive数据的建表ddl和hive练习题,非常适合做hive练习,新手培训,快速...LEFT SEMI JOIN Hive当前没有实现 IN/EXISTS 子查询,可以用 LEFT SEMI JOIN 重写子查询语句。
大数据的hive资源的详细代码设计以及分享,望博友相互交流
Author Elton Stoneman uses Hive Succinctly to introduce the core principles of Hive and guides readers through mapping Hadoop and HBase data in Hive, writing complex queries in HiveQL, and running ...
hive入门
hive hive hive hive hive hive hive hive hive hive hive hive
pdf文件讲述hive实现原理,图文并茂。
pyflink将mysql数据直接插入hive,由此可以延伸出pyflink实现hive关联mysql
spring-boot集成mybatis+druid实现 hive/mysql多数据源切换,用mysql数据库作为用户验证库以及用户信息库,hive作为数据可视化源库。
《Hive编程指南》是一本Apache Hive的编程指南 旨在介绍如何使用Hive的SQL方法 HiveQL来汇总 查询和分析存储在Hadoop分布式文件系统上的大数据集合 全书通过大量的实例 首先介绍如何在用户环境下安装和配置Hive 并对...