`

hive实例讲解实现in和not in子句

    博客分类:
  • hive
阅读更多
本文转自: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的实例

    本文将通过一个具体的Java与Hive结合的实例,深入讲解如何利用Java API进行Hive的操作,以加深对Hive语句的理解。 首先,要使用Java与Hive交互,我们需要引入Hive的JDBC驱动。在项目中,可以通过Maven或Gradle添加...

    部分普通sql查询在hive中的实现方式

    - **背景**:Hive不支持标准SQL中的`IN`和`EXISTS`关键字,但可以通过`LEFT SEMI JOIN`来模拟这些功能。 - **示例**:标准SQL中的`IN`关键字查询如下: ```sql SELECT a.key, a.value FROM a WHERE a.key IN ...

    JDBC连接Hive实例

    在大数据处理领域,Hive是一个基于Hadoop的数据仓库工具,它可以将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,使得用户可以使用SQL语句对存储在Hadoop集群上的大规模数据进行分析和处理。JDBC(Java ...

    Hive原理与实现

    ### Hive原理与实现 #### 一、Hive的概述与意义 Hive 是一个构建于 Hadoop 之上的数据仓库工具,它提供了类 SQL 的查询语言(HQL),使得用户可以方便地处理存储在 Hadoop 分布式文件系统(HDFS)中的大规模数据集...

    经典SQL查询总结关于Exists,not Exists.in ,not in效率的说明。

    **IN** 和 **NOT IN** 子句通常用于检查主查询中的某字段的值是否存在于(或不存在于)子查询返回的集合中。 1. **IN** - **语法结构**: ```sql SELECT * FROM t1 WHERE t1.c1 IN (SELECT c2 FROM t2); ``` ...

    hive udaf 实现按位取与或

    在“hive udaf 实现按位取与或”的场景中,我们主要探讨如何使用UDAF来实现数据的按位逻辑运算,如按位与(AND)和按位或(OR)。 一、Hive UDAF基本概念 UDAF是一种特殊的用户自定义函数,它负责处理一组输入值并...

    java操作Hive源码之HiveJDBC实例(mysql数据库)

    本实例将聚焦于如何使用Java和HiveJDBC来操作基于MySQL的Hive元数据存储。以下是一份详细的步骤指南和相关知识点解释: 1. **HiveJDBC简介**: HiveJDBC是Hive提供的一种JDBC驱动,使得任何支持JDBC的应用程序,如...

    使用javaJDBC连接hive数据,实现简单的操作!

    在Java代码中,我们可以通过`DriverManager.getConnection()`方法来实现。下面是一个基本的示例: ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; public class...

    HIVE-分桶表的详解和创建实例.docx

    ### HIVE-分桶表的详解与创建实例 #### 一、Hive 分桶表概述 在Hive中,为了提高查询效率,特别是在大数据场景下处理海量数据时,Hive引入了分桶(bucketing)的概念。分桶是在表级别进行的一种优化手段,它通过将表...

    Scala代码积累之spark streaming kafka 数据存入到hive源码实例

    Scala代码积累之spark streaming kafka 数据存入到hive源码实例,Scala代码积累之spark streaming kafka 数据存入到hive源码实例。

    hive练习数据和练习题及答案

    hive练习数据和hive练习题包含了hive练习数据,hive数据的建表ddl和hive练习题,非常适合做hive练习,新手培训,快速...LEFT SEMI JOIN Hive当前没有实现 IN/EXISTS 子查询,可以用 LEFT SEMI JOIN 重写子查询语句。

    Hive驱动1.1.0.zip

    在大数据处理领域,Hive是一个基于Hadoop的数据仓库工具,它允许用户使用SQL(HQL,Hive Query Language)查询和管理存储在Hadoop分布式文件系统(HDFS)中的大量结构化数据。Hive 1.1.0是Hive的一个版本,提供了...

    hive客户端安装_hive客户端安装_hive_

    本教程将详细讲解如何在Linux环境下安装Hive客户端,以便进行数据操作和分析。 一、Hadoop环境准备 在安装Hive客户端之前,确保你已经安装了Hadoop并且集群处于正常运行状态。Hadoop是Hive的基础,提供了分布式存储...

    hive的udf功能

    大数据的hive资源的详细代码设计以及分享,望博友相互交流

    HIVE安装及详解

    HIVE与Hadoop是一种紧密的关系,HIVE可以与Hadoop集成,实现大规模数据的存储和处理。 HIVE与传统数据库对比 HIVE与传统数据库有很多不同之处: * 数据存储:HIVE使用Hadoop分布式文件系统(HDFS)存储数据,而...

    hive实现原理

    ### Hive实现原理详解 #### 一、Hive简介与应用场景 Hive 是一款基于 Hadoop 的数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类 SQL 查询功能,使 MapReduce 编程更加简单,更具通用性。Hive ...

    spring-boot集成mybtis+druid实现hive/mysql多数据源切换

    本文将详细讨论如何使用Spring Boot、MyBatis和Druid来实现MySQL与Hive之间的多数据源切换,以满足不同业务场景的需求。 首先,Spring Boot是Spring框架的一种轻量级实现,它简化了配置并提供了快速开发新应用的...

    Hive_JDBC.zip_hive java_hive jdbc_hive jdbc pom_java hive_maven连

    Hive JDBC(Java Database Connectivity)是Hive提供的一种接口,使得其他编程语言,如Java,能够通过JDBC驱动程序与Hive进行交互,实现数据查询、分析和操作。本教程将深入讲解如何使用Hive JDBC在Java项目中建立与...

Global site tag (gtag.js) - Google Analytics