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;
//该模式下必须指定一个静态分区

最新文章

  1. C#:委托和自定义事件
  2. 玩转Unity资源,对象和序列化(下)
  3. 详解FindBugs的各项检测器 .
  4. Ubuntu 下安装 apt-get install npm 失败的解决方案
  5. UISegmentedControl swift
  6. asp.net MVC EF Where 过滤条件怎么写
  7. Word 中没有Endnote工具栏的解决方法
  8. 会话跟踪技术——cookie
  9. kubernetes 安装备注
  10. TypeError: 'range' object does not support item assignment处理方法
  11. netstat实现原理
  12. nginx报错zero size shared memory zone one
  13. hdu 6406 Taotao Picks Apples (2018 Multi-University Training Contest 8 1010)(二分,前缀和)
  14. Gson - 学习
  15. (一)从设计的角度来看ADT(Java)
  16. S3 对象
  17. 使用dev-tool定位页面性能瓶颈
  18. Plugin with id 'com.novoda.bintray-release' not found的解决方法
  19. Java Web项目部署
  20. 20155338 2016-2017-2 《Java程序设计》第4周学习总结

热门文章

  1. 160315、mybatis批量删除
  2. Python--进阶处理5
  3. CH5402 选课【树形DP】【背包】
  4. vscode编辑器配置C语言编译运行环境
  5. Servlet------>jsp jstl核心标签库
  6. Abp Uow 设计
  7. UNION WHERE
  8. git远程库与本地联系报错:fatal: Not a git repository (or any of the parent directories): .git
  9. Web项目管理工具精选(下)
  10. Flask之session相关