首页 > 其他分享 >Hive Order By,Sort by,Distribute By,Cluster By 排序区别

Hive Order By,Sort by,Distribute By,Cluster By 排序区别

时间:2022-11-05 16:58:53浏览次数:49  
标签:Sort sort Distribute 分区 distribute reduce Hive reducer 排序

Order By

Order By :全局排序,只有一个Reducer, 就算提前设置好n个reducer order by 也是只执行一个reducer,因为全局排序,排序的仅仅是一个表罢了。order by 对于大规模数据集效率很低,毕竟只有一个reducer

Sort By

Sort By(每个 Reduce 内部排序):对于大规模的数据集 order by 的效率非常低。在很多情况下,并不需要全局排序,此时可以使用 sort by。sort by 为每个 reducer 产生一个排序文件。每个 Reducer 内部进行排序,对全局结果集来说不是排序。

Distribute By

Distribute By(分区): 在有些情况下,我们需要控制某个特定行应该到哪个 reducer,通常是为了进行后续的聚集操作。distribute by 子句可以做这件事。distribute by 类似 MR 中 partition(自定义分区),进行分区,结合 sort by 使用。
对于 distribute by 进行测试,一定要分配多 reduce 进行处理,否则无法看到 distribute by 的效果
➢ distribute by 的分区规则是根据分区字段的 hash 码与 reduce 的个数进行模除后,余数相同的分到一个区。
➢ Hive 要求 DISTRIBUTE BY 语句要写在 SORT BY 语句之前。

Cluster By

cluster by :除了具有 distribute by 的功能外还兼具 sort by 的功能,一般用在当distribute by sort by两个分组有重复的字段的时候。但是排序只能是升序排序,不能指定排序规则为 ASC 或者 DESC。

(1)以下两种写法等价
hive (default)> select * from emp cluster by deptno;
hive (default)> select * from emp distribute by deptno sort by deptno;

注意:按照部门编号分区,不一定就是固定死的数值,可以是 20 号和 30 号部门分到一个分区里面去。


设置reduce个数:hive (default)> set mapreduce.job.reduces=?;
查看设置 reduce 个数 hive (default)> set mapreduce.job.reduces;

标签:Sort,sort,Distribute,分区,distribute,reduce,Hive,reducer,排序
From: https://www.cnblogs.com/catch-autumn/p/16860545.html

相关文章

  • 【100个 Unity实用技能】| C# 中 Sort() 对List中的数据排序的几种方法 整理总结
    Unity小科普老规矩,先介绍一下Unity的科普小知识:Unity是实时3D互动内容创作和运营平台。包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助Unity将创意......
  • Solution-P7650 [BalticOI 2007 Day 1] Ranklist Sorting(DP)
    容易发现一条性质:每个人最多只会被移动一次。说明人只有两种:移动的和不移动的。考虑枚举所有不移动的人,并最优化其它人的移动顺序。最开始第\(i\)个人的起点为\(i\),终......
  • Collections-sort
    importjava.util.ArrayList;importjava.util.Collections;importjava.util.List;/**1.Collections.sort(list);只能对List排序,注意:list中的*元素类型必须具备可......
  • s-sort命令
    对文本操作进行排序,以行为单位,依次根据ascii值进行比较,默认的排序方式为升序sort[-bcfMnrtk][源文件][-o输出文件]补充说明:sort可针对文本文件的内容,以行为单位来排......
  • HIVE- set
    SEThive.execution.engine=tez;SEThive.tez.auto.reducer.parallelism=true;SEThive.auto.convert.join=true;sethive.exec.compress.output=true;sethive.in......
  • 排序之希尔排序(shell sort)
    前言本篇博客是在伍迷兄的博客基础上进行的,其​​博客地址​​点击就可以进去,里面好博客很多,我的排序算法都来自于此;一些数据结构方面的概念我就不多阐述了,伍迷兄的博客......
  • hive的trunc函数详解
    一、日期TRUNC函数为指定元素而截去的日期值。其具体的语法格式:TRUNC(date[,fmt])其中:date一个日期值fmt日期格式,该日期将由指定的元素格式所截去。忽略它则由最......
  • Sort operation used more than the maximum 33554432 bytes of RAM
    在数据量超大的情形下,任何数据库系统在创建索引时都是一个耗时的大工程,下面这篇文章主要给大家介绍了关于MongoDB排序时内存大小限制与创建索引的注意事项的相关资料,需......
  • (转)hive中序列化和反序列化简介
    原文:https://blog.csdn.net/xixihaha_coder/article/details/121229591hive中序列化和反序列化简介serde简介hive的常用serdeLazySimpleSerDeCSVjsonserde......
  • Hive系列之解析JSON数据
    概述在数据处理中,经常遇到的一个数据类型就是JSON,MySQL数据库解析JSON,参考​​MySQL5.7JSON函数学习​​,​MySQLjson_mergewithgroupby​​。在大数据执行引擎Hive中,......