1).Hive中Select Top N的实现

Hive中使用 Order by + Limit 可以很容易地实现Select Top N。

但是在Hive中Order by只能使用1个Reduce,如果表的数据量很大,那么Order by就会力不从心。相对的,Sort by可以启动多个Reduce,每个Reduce做局部排序。

从执行计划explain中可以看出Sort by Limit N启动了两个MR Job。第一个Job是在每个Reduce中做局部排序,然后分别取Top N。假设启动了M个reduce,第二个Job再对M个Reduce分别局部排好序的总计M * N条数据做全局排序,再取最终的Top N,从而得到想要的结果。这样就可以大大提高Select Top N的效率。

set mapred.reduce.tasks=3;
select * from tea sort by age limit 3;

2).hive中的分号字符

分号是SQL语句结束标记,在HiveQL中也是,但是在HiveQL中,对分号的识别没有那么智慧,例如:

hive> select concat(';','a');
--会报异常NoViableAltException(-1@[]),解决方案: hive> select concat('\073','a');
--分号的ASCII值是59,八进制为073.只能使用八进制,对于十六进制无效
--concat(str1,str2)作用为拼接字符串

3).Hive客户端默认配置

以下操作均可在$HIVE_HOME/bin/.hiverc文件中保存,设置为默认参数

set hive.mapred.mode=strict;
//开启strict模式,以下情况报错:(1)没有limit限制的order by语句.(2)动态分区插入 set hive.cli.print.current.db=true;
//显示当前工作的数据库 set hive.cli.print.header=true;
//显示列名 set mapred.reduce.tasks=3;
//设置reduce的个数 set hive.exec.reducers.bytes.per.reducer;
//多少字节开一个reducer,默认256000000 set hive.exec.dynamic.partition.mode=strict;
//该模式下必须指定一个静态分区

Hive相关随笔的更多相关文章

  1. Hive相关集锦

    Hive介绍 http://www.cnblogs.com/sharpxiajun/archive/2013/06/02/3114180.htmlHive的数据类型和数据模型 http://www.c ...

  2. 3. Hive相关知识点

    以下是阅读<Hive编程指南>后整理的一些零散知识点: 1. 有时候用户需要频繁执行一些命令,例如设置系统属性,或增加对于Hadoop的分布式内存,加入自定的Hive扩展的Jave包(JA ...

  3. Hive相关知识点

    ---恢复内容开始--- 转载:Hive 性能优化 介绍 首先,我们来看看Hadoop的计算框架特性,在此特性下会衍生哪些问题? 数据量大不是问题,数据倾斜是个问题. jobs数比较多的作业运行效率相 ...

  4. hive相关

    HIVE JOIN:http://blog.csdn.net/yfkiss/article/details/8073608 HIVE资料: 一条记录map阶段输出KV,shuffle sort,输出K ...

  5. Spark、Hadoop、Hive相关文章

    1.Spark On Yarn(HDFS HA)详细配置过程 2.Hive安装与配置详解

  6. hive中行转换成列以及hive相关知识

    Hive语句: Join应该把大表放到最后 左连接时,左表中出现的JOIN字段都保留,右表没有连接上的都为空.对于带WHERE条件的JOIN语句,例如: 1 SELECT a.val, b.val F ...

  7. hive 相关异常

    内存不够: set mapreduce.map.memory.mb=4096;set mapreduce.map.java.opts=-Xmx3280m; set mapreduce.reduce.m ...

  8. hive 属性随笔记录

    set hive.mapred.mode=strict; //设置hive执行模式,默认为nonstrict(非严格模式),这里设置为严格模式 set hiveconf:hive.cli.print. ...

  9. SSM框架之AOP、动态代理、事务处理相关随笔

    AOP: 原理:底层利用动态代理(两种动态代理技术都使用了) 两种实现方案: 第一种:JDK动态代理技术 实现的InvocationHandler接口,要想实现某个类的动态代理对象,必须有接口有实现类 ...

随机推荐

  1. Java中break、continue、return语句的使用区别

    break.continue.return之间的区别与联系 在软件开发过程中,逻辑清晰是非常之重要的. 代码的规范也是非常重要的.往往细节决定成败.在编写代码的时候,一定要理解语言的作用以及使用的方法 ...

  2. hdu1575 Tr A 矩阵快速幂模板题

    hdu1575   TrA 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1575 都不需要构造矩阵,矩阵是题目给的,直接套模板,把对角线上的数相加就好 ...

  3. However, a general purpose protocol or its implementation sometimes does not scale very well.

    https://netty.io/wiki/user-guide-for-4.x.html The Problem Nowadays we use general purpose applicatio ...

  4. java中日期常用

    Java中日期的几种常见操作 —— 取值.转换.加减.比较 Java 的开发过程中免不了与 Date 类型纠缠,准备总结一下项目经常使用的日期相关操作,JDK 版本 1.7,如果能够帮助大家节约那么几 ...

  5. ovn-kubernetes执行流程概述

    Master部分 1.master初始化 以node name创建一个distributed logical router 创建两个load balancer用于处理east-west traffic ...

  6. 前端框架之SweetAlert

    简介 SweetAlert是一款很好用的弹出框框架 下载 点我下载 导入 博主用的是bootstrap-sweetalert,所以要依赖bootstrap,导入前先导入原生jQuery以及bootst ...

  7. WSDL(WebService描述语言)文件介绍

    一.WSDL 1.WSDL 文档的组成部分 <portType>:web service 执行的操作 <message>:web service 使用的消息 <types ...

  8. Oracle 通过undo块查看事务信息(转)

      数据库版本:Oracle 11.2.0.3 RAC 实验目的:通过undo块查看Oracle事务信息 实验细节:1 开始一个事务SQL> select * from t1; ID NAME- ...

  9. SuperObject使用

    SuperObject SuperObject第三方控件包,试用了下并编写了个DEMO,发现还是蛮强大.废话 少说,看看下面的代码就知道其强大: 1.JSON原始数据 {   "name&q ...

  10. 处理函数和数组声明[条款17]---《C++必知必会》

    指向函数的指针声明和指向数组的指针声明容易混淆,原因在于函数和数组修饰符的优先级比指针修饰符的优先级高,因此通常需要使用圆括号. int *f1( );//一个返回值为 int* 的函数 int ( ...