- 浏览: 786533 次
- 性别:
- 来自: 广州
文章分类
最新评论
本文转自: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 6158一、总体思想 http://blog.csdn.net/ ... -
hive-数据倾斜解决详解
2016-04-11 11:11 8680hive在跑数据时经常会出现数据倾斜的情况,使的作业经常r ... -
抽样类型详细说明
2016-03-24 10:41 2875抽样的类型 根据 ... -
hive配置详解
2016-03-18 10:48 1301hive中有许多配置将帮 ... -
hive打开调试信息方法
2016-03-17 17:53 1064当用hive查询时,有时可能会报错,当要查看详细的报错信息时 ... -
set hive.groupby.skewindata与数据倾斜
2016-03-16 10:03 12360hive和其它关系数据库一样,支持count(distinc ... -
hive:[Fatal Error] Operator FS_14 (id=14): Number of dynamic partitions exceeded
2016-03-10 10:44 1098向动态分区时,报错:hive:[Fatal Error] O ... -
Hive中Join的原理和机制
2016-01-22 20:36 943Hive中Join的原理和机制 笼统的说,Hive中的J ... -
hive 随机抽样
2016-01-22 20:23 145611. Random sampling 使用RAND()函 ... -
hive 分组取每个组中的top N条记录
2016-01-22 10:00 0SELECT id, rate, score FROM ( ... -
hive文件合并方法
2015-12-26 17:40 4349当Hive输入由很多个小 ... -
hive 查看一个表的总文件大小方法
2015-11-12 18:02 14411要查看一个hive表文件总大小时,我们可以通过一行脚本快速 ... -
hive 行转列和列转行的方法
2015-11-06 19:56 20367一、行转列的使用 1、问题 hive如何将 a ... -
hive array、map、struct使用
2015-11-06 19:40 2091hive提供了复合数据类型:Structs: structs ... -
hive with查询用法及CTAS的使用
2015-11-04 17:48 10669hive 可以通过with查询来提高查询性 ... -
hive创建表是报错: Specified key was too long; max key length is 767 bytes
2015-07-13 09:19 3733今天在hive客户端创建表时报错,具体操作如下 h ... -
hive having count 不能去重
2015-07-03 11:10 7570hive在使用having count()是,不支持去重计 ... -
Hive分析窗口函数 LAG,LEAD,FIRST_VALUE,LAST_VALUE
2015-05-25 10:37 10034问题导读1.LAG功能是什么?2.LEAD与LAG功能 ... -
Hive几种导出数据方式
2015-05-11 21:31 2249Hive几种导出数据方式 1.拷贝 ... -
hive 客户端查询报堆内存溢出解决方法
2015-03-25 21:32 5460hive> select * from t_test ...
相关推荐
本文将通过一个具体的Java与Hive结合的实例,深入讲解如何利用Java API进行Hive的操作,以加深对Hive语句的理解。 首先,要使用Java与Hive交互,我们需要引入Hive的JDBC驱动。在项目中,可以通过Maven或Gradle添加...
- **背景**:Hive不支持标准SQL中的`IN`和`EXISTS`关键字,但可以通过`LEFT SEMI JOIN`来模拟这些功能。 - **示例**:标准SQL中的`IN`关键字查询如下: ```sql SELECT a.key, a.value FROM a WHERE a.key IN ...
在大数据处理领域,Hive是一个基于Hadoop的数据仓库工具,它可以将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,使得用户可以使用SQL语句对存储在Hadoop集群上的大规模数据进行分析和处理。JDBC(Java ...
### Hive原理与实现 #### 一、Hive的概述与意义 Hive 是一个构建于 Hadoop 之上的数据仓库工具,它提供了类 SQL 的查询语言(HQL),使得用户可以方便地处理存储在 Hadoop 分布式文件系统(HDFS)中的大规模数据集...
**IN** 和 **NOT IN** 子句通常用于检查主查询中的某字段的值是否存在于(或不存在于)子查询返回的集合中。 1. **IN** - **语法结构**: ```sql SELECT * FROM t1 WHERE t1.c1 IN (SELECT c2 FROM t2); ``` ...
在“hive udaf 实现按位取与或”的场景中,我们主要探讨如何使用UDAF来实现数据的按位逻辑运算,如按位与(AND)和按位或(OR)。 一、Hive UDAF基本概念 UDAF是一种特殊的用户自定义函数,它负责处理一组输入值并...
本实例将聚焦于如何使用Java和HiveJDBC来操作基于MySQL的Hive元数据存储。以下是一份详细的步骤指南和相关知识点解释: 1. **HiveJDBC简介**: HiveJDBC是Hive提供的一种JDBC驱动,使得任何支持JDBC的应用程序,如...
在Java代码中,我们可以通过`DriverManager.getConnection()`方法来实现。下面是一个基本的示例: ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; public class...
### HIVE-分桶表的详解与创建实例 #### 一、Hive 分桶表概述 在Hive中,为了提高查询效率,特别是在大数据场景下处理海量数据时,Hive引入了分桶(bucketing)的概念。分桶是在表级别进行的一种优化手段,它通过将表...
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是一个基于Hadoop的数据仓库工具,它允许用户使用SQL(HQL,Hive Query Language)查询和管理存储在Hadoop分布式文件系统(HDFS)中的大量结构化数据。Hive 1.1.0是Hive的一个版本,提供了...
本教程将详细讲解如何在Linux环境下安装Hive客户端,以便进行数据操作和分析。 一、Hadoop环境准备 在安装Hive客户端之前,确保你已经安装了Hadoop并且集群处于正常运行状态。Hadoop是Hive的基础,提供了分布式存储...
大数据的hive资源的详细代码设计以及分享,望博友相互交流
HIVE与Hadoop是一种紧密的关系,HIVE可以与Hadoop集成,实现大规模数据的存储和处理。 HIVE与传统数据库对比 HIVE与传统数据库有很多不同之处: * 数据存储:HIVE使用Hadoop分布式文件系统(HDFS)存储数据,而...
### Hive实现原理详解 #### 一、Hive简介与应用场景 Hive 是一款基于 Hadoop 的数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类 SQL 查询功能,使 MapReduce 编程更加简单,更具通用性。Hive ...
本文将详细讨论如何使用Spring Boot、MyBatis和Druid来实现MySQL与Hive之间的多数据源切换,以满足不同业务场景的需求。 首先,Spring Boot是Spring框架的一种轻量级实现,它简化了配置并提供了快速开发新应用的...
Hive JDBC(Java Database Connectivity)是Hive提供的一种接口,使得其他编程语言,如Java,能够通过JDBC驱动程序与Hive进行交互,实现数据查询、分析和操作。本教程将深入讲解如何使用Hive JDBC在Java项目中建立与...