pig里面是有TOP函数,不知道为什么用不了.有时间要去看看pig源码了. SET job.name 'top_k'; SET job.priority HIGH; --REGISTER piggybank.jar; REGISTER wizad-etl-udf-0.1.jar; --DEFINE SequenceFileLoader org.apache.pig.piggybank.storage.SequenceFileLoader(); DEFINE SequenceFileLoader…
关于Oracle中查询的数字值的显示格式需要保留小数点后两位(或者三位,及其... 方法一:使用to_char的fm格式,即: to_char(round(data.amount,2),'FM9999999999999999.00') as amount 不足之处是,如果数值是0的话,会显示为.00而不是0.00. 另一需要注意的是,格式中小数点左边9的个数要够多,否则查询的数字会显示为n个符号“#”. 解决方式如下: select decode(salary,0,'0.00',(to_char…
pig里面有一个TOP功能.我不知道为什么用不了.有时间去看看pig源代码. SET job.name 'top_k'; SET job.priority HIGH; --REGISTER piggybank.jar; REGISTER wizad-etl-udf-0.1.jar; --DEFINE SequenceFileLoader org.apache.pig.piggybank.storage.SequenceFileLoader(); DEFINE SequenceFileLoader…
1. 10亿个数中找出最大的1000个数 这种题目就是分治+堆排序. 为啥分治?因为数太多了,全部加载进内存不够用,所以分配到多台机器中,或者多个文件中,但具体分成多少份,视情况而定,只要保证满足内存限制即可.什么,如何分?Hash(num)% numOfFiles. 为啥堆排序?首先堆排序是一种选择排序,比一般的选择排序时间复杂度要低,额外的空间复杂度都是O(1).因为我只要在每一份中拿出最大的1000个即可,这里用大顶堆还是小顶堆呢? 开始我觉得是大顶堆,我们不妨举个例子:假设10亿个数,分…
题目描述 输入一个链表,输出该链表中倒数第k个结点. 思路:  两个指针,起始位置都是从链表头开始,第一个比第二个先走K个节点,当第一个走到链表尾时,第二个指针的位置就是倒数第k个节点.(两指针始终相聚k个节点) 注意边界条件: 1.链表不能一开始就是空的. 2.当链表只有5个节点时,若k=5,则返回第1个节点:若K>5,统一返回NULL. 边界条件十分影响case通过率!!! #include "../stdafx.h" #include <stdio.h> #in…
七种数据库中Select Top的使用方法 1. Oracle数据库  SELECT * FROM TABLENAME WHERE ROWNUM <= N 2. Infomix数据库  SELECT FIRST N * FROM TABLENAME 3. DB2数据库  SELECT *  FROM (SELECT * ROW_NUMBER() OVER({ORDER BY COL1 DESC}) AS ROWNUM FROM TABLENAME)  WHERE ROWNUM <= N 或者 …
https://leetcode.com/problems/kth-largest-element-in-an-array/ 使用堆,堆插入一个数据是logk,删除一个数据是logk,复杂度为logk Java class Solution { public int findKthLargest(int[] nums, int k) { PriorityQueue<Integer> minQueue = new PriorityQueue<>(k); for (int num :…
实例1:id自关联. 隐式内连接: 实例二:编写一个 SQL 查询,来查找与之前(昨天的)日期相比温度更高的所有日期的 id .返回结果 不要求顺序 . 查询结果格式如下例: Weather +----+------------+-------------+ | id | recordDate | Temperature | +----+------------+-------------+ | 1 | 2015-01-01 | 10 | | 2 | 2015-01-02 | 25 | | 3…
前两天面试3面学长问我的这个问题(想说TEG的3个面试学长都是好和蔼,希望能完成最后一面,各方面原因造成我无比想去鹅场的心已经按捺不住了),这个问题还是建立最小堆比较好一些. 先拿10000个数建堆,然后一次添加剩余元素,如果大于堆顶的数(10000中最小的),将这个数替换堆顶,并调整结构使之仍然是一个最小堆,这样,遍历完后,堆中的10000个数就是所需的最大的10000个.建堆时间复杂度是O(mlogm),算法的时间复杂度为O(nmlogm)(n为10亿,m为10000). 优化的方法:可以把…
(这也是一道leetcode的经典题目:<LeetCode>解题笔记:004. Median of Two Sorted Arrays[H] 问题介绍 这是个超级超级经典的分治算法!!这个问题大致是说,如何在给定的两个有序数组里面找其中的中值,或者变形问题,如何在2个有序数组数组中查找Top K的值(Top K的问题可以转换成求第k个元素的问题).这个算法在很多实际应用中都会用到,特别是在当前大数据的背景下. 我觉得下面的这个思路特别好,特别容易理解!!请按顺序看.是来自leetcode上的s…
1. 问题描述 在大规模数据处理中,常遇到的一类问题是,在海量数据中找出出现频率最高的前K个数,或者从海量数据中找出最大的前K个数,这类问题通常称为“top K”问题,如:在搜索引擎中,统计搜索最热门的10个查询词:在歌曲库中统计下载率最高的前10首歌等等. 2. 当前解决方案 针对top k类问题,通常比较好的方案是[分治+trie树/hash+小顶堆],即先将数据集按照hash方法分解成多个小数据集,然后使用trie树或者hash统计每个小数据集中的query词频,之后用小顶堆求出每个数据集…
动态数据集合中求top k大元素 第1大,第2大 ...第k大 k是这群体里最小的 所以要建立个小顶堆 只需要维护一个大小为k的小顶堆 即可 当来的元素(newCome)> 堆顶元素(smallTop),说明进来的元素有和堆顶竞争的资格,此时的堆顶被踢出 这时把进来的元素放到堆顶 newCome>smallTop,smallTop的左右孩子>smallTop,所以无法确认 newCome和smallTop的左右孩子的大小关系, 在newCome和smallTop的左右子节点找到最小的元素…
题目描述 输入一个链表,输出该链表中倒数第k个结点. 编程过程 此处采用两个指针依次后移的方法来求解,首先,用一个指针移到第k个位置,之后将第二个指针放在第一位,与第二个指针一同移动,当第二个指针移动到最后的时候,第一个指针即处于倒数第k个结点. 考虑:链表为空.k为小于等于零的数,以及k的长度大于链表长度等情况. /* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = va…
题目描述:   输入一个链表,输出该链表中倒数第k个结点. 思路分析:   设置两个指针,一个fast一个slow,都从链表头开始,让fast先走k步,然后两个指针一起走,当fast走到尾部,那么slow指针指向的就是倒数第K个节点. 代码: public class Solution { public ListNode FindKthToTail(ListNode head,int k) { ListNode fast=head; ListNode slow=head; if(head==nu…
问题: 有如下数据文件 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…
SQLServer中查询的数字列前面补0返回指定长度的字符串: 如: 角本如下: /****** Script for SelectTopNRows command from SSMS ******/ SELECT TOP [ID] ,[SN] ,[Name] FROM [EduDB].[dbo].[TestTab] ',SN) from TestTab; )+CAST(SN AS varchar()),) AS 'SN' from TestTab; )),) as 'sn' from Test…
问题描述:现在有m组n个有序数组,例如{1,2,3,4},{2,3,4,6},{1,3,5,7},在这些数组中选择第k小的数据,然后返回这个值 思路:参照两个数组归并的过程,每次选取最小的数据进行比较 1,定义选取位置数组index[m],初始化为0 2,每次根据index[m]寻找到第l_row个数组,确保当前时刻的第l_row数组的当前位置为最小值:寻找时确保index[i]的值小于n 3,把最小值取出,index[l_row]自增1 4,逐次寻找,知道找到第k个为止 public stat…
 package com.ucap.netcheck.dao.impl; import java.util.ArrayList;import java.util.List; import org.hibernate.Query;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.springframework.beans.factory.annotation.Autowired;import…
shell脚本中sqlite3命令查询数据库失败返回空,并将错误信息打印到标准错误输出 如: #/bin/sh local ret='sqlite3 test.db "select test from test;"' 或: local ret=$(sqlite3 test.db "select test from test;") 如果test.db被锁定,ret将为空,标准错误输出有信息“Error:database is locked”.…
mongodb中查询返回指定字段   在写vue项目调用接口获取数据的时候,比如新闻列表页我只需要显示新闻标题和发表时间,点击每条新闻进入详情页的时候才会需要摘要.新闻内容等关于此条新闻的所有字段. 但其实我所有关于新闻的数据在同一个数据集合里,也就是只有一个集合 我不希望获取新闻列表的时候就把每条新闻的所有数据都显示 我也不希望是建两个集合分别放列表数据和详情数据 所以这篇文章对我很有帮助:MongoDB查询操作限制返回字段的方法 //只输出id和title字段,第一个参数为查询条件,空代表查…
用SQL查询方式显示GROUP BY中的TOP怎样用一个SQL语句来显示 分组后每个组的前几位 比如把一个学校所有学生的成绩按班级分组,再显示每个班级前五名的信息. 班级     学生   成绩 一班     李X       100 一班     王X       99 一班     刘X       98 一班     赵X       97 一班     孙X       96 二班     李W       100 二班     王W       99 二班     刘W       9…
今天在别人的代码基础上实现新需求,看到对于mybatis查询结果的判断不是很正确,如果查询结果为空就会异常,不知道大家有没有这样的疑惑:mybatis中resultType有多种返回类型,对于每种不同类型,查询结果为空时dao接口的返回值是一样的吗?接下来我就总结一下常见的几种情况. 第一种:resultType为基本类型,如string(在此暂且把string归纳为基本类型) 如果select的结果为空,则dao接口返回结果为null 第二种,resultType为基本类型,如int 后台报异…
问题描述 需求: 查询出每月 order_amount(订单金额) 排行前3的记录. 例如对于2019-02,查询结果中就应该是这3条: 解决方法 MySQL 5.7 和 MySQL 8.0 有不同的处理方法. 1. MySQL 5.7 我们先写一个查询语句. 根据 order_date 中的年.月,和order_amount进行降序排列. 然后,添加一个新列:order_amount(本条记录在本月中的名次). 执行结果: 可以看到,根据年.月.订单金额排序了,还多了一列order_rank,…
在未排序的数组中找到第 k 个最大的元素.请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素. 示例 1: 输入: [3,2,1,5,6,4] 和 k = 2 输出: 5 示例 2: 输入: [3,2,3,1,2,4,5,5,6] 和 k = 4 输出: 4 TopK的问题,思路就是用堆来解决. 先以前K个元素构建一个大小为K的小顶堆,然后从K个元素之后,遍历从索引在K后面的元素,如果有大于小顶堆的堆顶元素的,那么就交换两个元素并重新构建小顶堆.遍历到最后的小顶堆堆…
算法的基本设计思想:定义两个指针变量p和q  初始时均指向头结点的下一个结点(即链表的第一个结点)p沿链表移动,当p移动到第k个结点时,q指针开始与p指针同时移动,当p指针移动到最后一个结点时,q指针所指示结点为倒数第k个结点 typedef struct LNode{ int data; struct LNode* next; }LNode, *Linklist; int search_k(Linklist list , int k) { LNode *p = list->next; LNod…
L3-002. 堆栈 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 大家都知道“堆栈”是一种“先进后出”的线性结构,基本操作有“入栈”(将新元素插入栈顶)和“出栈”(将栈顶元素的值返回并从堆栈中将其删除).现请你实现一种特殊的堆栈,它多了一种操作叫“查中值”,即返回堆栈中所有元素的中值.对于N个元素,若N是偶数,则中值定义为第N/2个最小元:若N是奇数,则中值定义为第(N+1)/2个最小元. 输入格式: 输入第一行给出正整…
程序员编程艺术:第三章续.Top K算法问题的实现 作者:July,zhouzhenren,yansha.     致谢:微软100题实现组,狂想曲创作组.     时间:2011年05月08日     微博:http://weibo.com/julyweibo .     出处:http://blog.csdn.net/v_JULY_v .     wiki:http://tctop.wikispaces.com/. --------------------------------------…
1.top k问题 在海量数据处理中,经常会遇到的一类问题:在海量数据中找出出现频率最高的前k个数,或者从海量数据中找出最大的前k个数,这类问题通常被称为top K问题.例如,在搜索引擎中,统计搜索最热门的10个查询词:在歌曲库中统计下载最高的前10首歌等 2.实例 2.1从N个无序数中寻找Top-k个最小数 问题分析 针对海量数据的top k问题,这里实现了一种时间复杂度为O(Nlogk)的有效算法:初始时一次性从文件中读取k个数据,并建立一个有k个数的最大堆,代表目前选出的最小的k个数.然后…
Top-k的最小堆解决方法 问题描述:有N(N>>10000)个整数,求出其中的前K个最大的数.(称作Top k或者Top 10) 问题分析:由于(1)输入的大量数据:(2)只要前K个,对整个输入数据的保存和排序是相当的不可取的. 可以利用数据结构的最小堆来处理该问题. 最小堆如图所示,对于每个非叶子节点的数值,一定不大于孩子节点的数值.这样可用含有K个节点的最小堆来保存K个目前的最大值(当然根节点是其中的最小数值). 每次有数据输入的时候可以先与根节点比较.若不大于根节点,则舍弃:否则用新数…
题目描述 题目链接 思路 由于要统计每个字符串的次数,以及字典序,所以,我们需要把用户每次add的字符串封装成一个对象,这个对象中包括了这个字符串和这个字符串出现的次数. 假设我们封装的对象如下: public class Word { public String value; // 对应的字符串 public int times; // 对应的字符串出现的次数 public Word(String v, int t) { value = v; times = t; } } topk的要求是:…