hive的top n】的更多相关文章

注意 hive 的hsql没有 top n这个功能,不像sql. 所以实现top n如下: 我想说的SELECT TOP N是取最大前N条或者最小前N条. Hive提供了limit关键字,再配合order by可以很容易地实现SELECT TOP N. 但是在Hive中order by只能使用1个reduce,如果表的数据量很大,那么order by就会力不从心. 例如我们执行SQL:select a from ljntest01 order by a limit 10; 控制台会打印出:Num…
key points: 1. group by key and sort by using distribute by and sort by. 2. get top k elements by a UDF (user defined function) RANK ---------Here is the source code.-------------- package com.example.hive.udf;import org.apache.hadoop.hive.ql.exec.UD…
pig可以轻松获取TOP n.书上有例子 hive中比较麻烦,没有直接实现的函数,可以写udf实现.还有个比较简单的实现方法: 用row_number,生成排名序列号.然后外部分组后按这个序列号多虑,样例代码如下 select a.* from( select 品牌,渠道,档期,count/sum/其它() as num row_number() over (partition by 品牌,渠道 order by num desc ) rank from table_name where 品牌,…
hive 中窗口函数row_number,rank,dense_ran,ntile分析函数的用法 hive中一般取top n时,row_number(),rank,dense_ran()这三个函数就派上用场了, 先简单说下这三函数都是排名的,不过呢还有点细微的区别. 通过代码运行结果一看就明白了. 示例数据: 1 2 3 4 5 6 7 8 9 10 11 1   a   10 2   a   12 3   b   13 4   b   12 5   a   14 6   a   15 7  …
Hive在0.11.0版本开始加入了row_number.rank.dense_rank分析函数,可以查询分组排序后的top值   说明: row_number() over ([partition col1] [order by col2]) rank() over ([partition col1] [order by col2]) dense_rank() over ([partition col1] [order by col2]) 它们都是根据col1字段分组,然后对col2字段进行排…
问题: 有如下数据文件 city.txt (id, city, value) cat city.txt 1 wh 5002 bj 6003 wh 1004 sh 4005 wh 2006 bj 1007 sh 2008 bj 3009 sh 900需要按 city 分组聚合,然后从每组数据中取出前两条value最大的记录. 1.这是实际业务中经常会遇到的 group TopK 问题,下面来看看 pig 如何解决: 1 a = load '/data/city.txt'  using PigSto…
我想说的SELECT TOP N是取最大前N条或者最小前N条. Hive提供了limit关键字,再配合order by可以很容易地实现SELECT TOP N. 但是在Hive中order by只能使用1个reduce,如果表的数据量很大,那么order by就会力不从心. 例如我们执行SQL:select a from ljntest01 order by a limit 10; 控制台会打印出:Number of reduce tasks determined at compile time…
阿里交叉面试问到了这个题,当时感觉没有答好,主要是对Hive这块还是不熟悉,其实可以采用row_number()函数. 1.ROW_NUMBER,RANK(),DENSE_RANK() 语法格式:row_number() OVER (partition by COL1 order by COL2 desc ) rank partition by:类似hive的建表,分区的意思: order by :排序,默认是升序,加desc降序: rank:表示别名 表示根据COL1分组,在分组内部根据 CO…
一. 分区函数Partition By与row_number().rank().dense_rank()的用法(获取分组(分区)中前几条记录) 一.数据准备 --1.创建学生成绩表 id int,  --主键 Grade int, --班级 Score int --分数 CREATE TABLE Student3(id INT, grade INT,score int) CLUSTERED by(id) INTO 7 BUCKETS STORED AS ORC  tblproperties('t…
一.安装模式介绍:     Hive官网上介绍了Hive的3种安装方式,分别对应不同的应用场景.     1.内嵌模式(元数据保村在内嵌的derby种,允许一个会话链接,尝试多个会话链接时会报错)     2.本地模式(本地安装mysql 替代derby存储元数据)     3.远程模式(远程安装mysql 替代derby存储元数据) 二.安装环境以及前提说明:     首先,Hive是依赖于hadoop系统的,因此在运行Hive之前需要保证已经搭建好hadoop集群环境.     本文中使用的…