(04)Hive的相关概念——order by 、sort by、distribute by 、cluster by

这篇具有很好参考价值的文章主要介绍了(04)Hive的相关概念——order by 、sort by、distribute by 、cluster by。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Hive中的排序通常涉及到order by 、sort by、distribute by 、cluster by 

一、语法


select
        column1,
        column2, ...
from table 
[where 条件] 
[group by column]
[order by column] 
[cluster by column| [distribute by column] [sort by column] 
[limit [offset,] rows];

二、排序介绍

2.1 order by

 Hive的order by 与其他的sql一样,对所有数据进行排序,全局排序,只有一个 Reducer在严格模式(set hive.mapred.mode=strict)下,执行order by 必须加上limit 子句,避免数据集行数过大。order by 字段 ,默认是升序。

2.2 distribute by和sort by

    针对order by的缺点,Hive提供了distribute by 分区和sort by 排序。例如: select *  from user_info distribute by user_id sort by login_date desc;

  • distribute by

       shuffle阶段,基于key值,可以控制数据发往具体某个分区 ,相同key的数据会分发到同一个reduceTask中。

      distribute by类似 MR 中的自定义分区 partition ,distribute by 的分区规则是:分区字段的hashcode值对reduce 个数取模后余数相同的数据会分发到同一个reduceTask中。

  • sort by

      指定sort by后,可以在每个reducer端做排序,即可以保证局部有序(每个reducer出来的数据是有序的,但是不能保证所有的数据是有序的,除非只有一个reducer)。

     指定sort by好处是:执行了局部排序之后可以为接下去的全局排序提高不少的效率。文章来源地址https://www.toymoban.com/news/detail-834563.html

2.3 cluster by

    当 distribute by sorts by 字段相同时,可以使用 cluster by 方式。 但是排序 只能是升序
排序, 不能指定排序规则为 acs  或者 desc
select *  from user_info distribute by user_id sort by user_id;
--等价于
select *  from user_info cluster by user_id;

三、总结

  • order by全局排序,只有一个reducer,结果输出在一个文件中,当数据量较大时,需要较长的计算时间;
  • distribute by根据指定字段将数据分组,分组编号 = 【字段的hashcode 】% 【reduce数】,sort by是在分组之后,每个组内局部排序,即保障了每个reducer端的数据有序;
  • cluster by既有分组,又有排序,前提是分组与排序字段相同,当distribute和sort的字段是同一个时,cluster by = distribute by + sort by

到了这里,关于(04)Hive的相关概念——order by 、sort by、distribute by 、cluster by的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • hive 随机抽样 distribute by rand() sort by rand() limit n

    在分析或者处理大规模数据时,由于数据量较大时,一般只能随机抽样一部分的数据来分析,那么如何进行随机抽样呢? 下面有几种方法,目前常用的是 distribute by rand() sort by rand() limit n order by rand() : order by 是全局的,比较耗时, 只有一个reduce,是真正的随机 sort by rand()

    2023年04月23日
    浏览(65)
  • hive order by length() 报错

    hql 如下 select length(tag) from table1 order by length(tag) limit 20; 报错FAILED: SemanticException [Error 10004]: Line…Invalid table alias or column reference ‘tag’: (possible column names are: _c0) FAILED: SemanticException [Error 10004]: Line…Invalid table alias or column reference ‘tag’: (possible column names are: _c0) 修改 用别名替

    2024年01月21日
    浏览(38)
  • Hive:聚合函数、GROUP BY、ORDER BY、LIMIT、执行顺序和JOIN、函数

    1.聚合函数 常见的聚合函数: Count、Sum、Max、Min和Avg 特点:不管原始数据多少条,聚合之后只有一条 Count(column)返回某列的行数,不包括NULL值 2.GROUP BY select中的字段要么是GROUP BY字段,要么是被聚合函数应用的字段 2.HAVING WHERE中无法出现聚合函数,所以有了HAVING WHERE是分组前

    2024年02月07日
    浏览(49)
  • (05) Hive的相关概念——函数介绍

    目录 一、各数据类型的基础知识点 1.1 数值类型 整数 小数 float double(常用) decimal(针对高精度) 1.2 日期类型 date datetime timestamp time year 1.3 字符串类型 char varchar / varchar2 blob /text  tinyblob / tinytext mediumblob / mediumtext longblob / longtext string(常用) 二、Hive中的常用函数 2.1 单行函数 2.1

    2024年02月20日
    浏览(46)
  • (10)Hive的相关概念——文件格式和数据压缩

    目录 一、文件格式 1.1 列式存储和行式存储 1.1.1 行存储的特点 1.1.2 列存储的特点 1.2 TextFile 1.3 SequenceFile 1.4  Parquet 1.5 ORC 二、数据压缩  2.1 数据压缩-概述  2.1.1 压缩的优点  2.1.2 压缩的缺点 2.2 Hive中压缩配置 2.2.1 开启Map输出阶段压缩(MR 引擎) 2.2.2 开启Reduce输出阶

    2024年02月22日
    浏览(45)
  • 2、hive相关概念详解--架构、读写文件机制、数据存储

    1、apache-hive-3.1.2简介及部署(三种部署方式-内嵌模式、本地模式和远程模式)及验证详解 2、hive相关概念详解–架构、读写文件机制、数据存储 3、hive的使用示例详解-建表、数据类型详解、内部外部表、分区表、分桶表 4、hive的使用示例详解-事务表、视图、物化视图、DDL

    2024年02月09日
    浏览(47)
  • hive中Distinct和group by去重的对比

            在Hive中, DISTINCT和GROUP BY都可以用于去重,但是它们背后的实现方式是不同的,因此它们的效率也是不同的。         DISTINCT是一种去重方法,它会扫描整个数据集,然后将重复的记录删除,只留下唯一的记录 。由于DISTINCT需要扫描整个数据集,因此它在处理

    2024年02月04日
    浏览(56)
  • hive SQL: case when + group by 的用法

    假设有一个数据表,包含了不同人员的信息,其中包括姓名、性别、年龄等字段。现在需要统计不同年龄区间的人数,并按照年龄区间进行分组。可以使用如下 SQL 语句实现: ``` SELECT    CASE      WHEN age BETWEEN 0 AND 10 THEN \\\'0-10\\\'      WHEN age BETWEEN 11 AND 20 THEN \\\'11-20\\\'      WHEN a

    2024年02月08日
    浏览(79)
  • Spark和Hive概念

    Spark介绍:       Spark是一个开源的分布式数据处理引擎,最初由加州大学伯克利分校的AMPLab开发。它被设计用来处理大规模数据集,提供快速、通用、易用的数据处理框架。Spark能够在内存中快速处理数据,支持多种数据源,包括Hadoop Distributed File System(HDFS)和Apache Cassan

    2024年02月15日
    浏览(40)
  • Hive简介及核心概念

    本专栏案例数据集链接:  https://download.csdn.net/download/shangjg03/88478038 Hive 是一个构建在 Hadoop 之上的数据仓库,它可以将结构化的数据文件映射成表,并提供类 SQL 查询功能,用于查询的 SQL 语句会被转化为 MapReduce 作业,然后提交到 Hadoop 上运行。 特点: 1. 简单、容

    2024年02月07日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包