Hive为什么要分桶?

这篇具有很好参考价值的文章主要介绍了Hive为什么要分桶?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.获得更高的查询处理效率

        在 分区数量过于庞大 以至于可能导致文件系统崩溃时,或数据集 找不到合理的分区字段 时,我们就 需要 使用分桶 来解决问题了。
        分区中的数据可以被进一步拆分成桶 ,不同于分区对列直接进行拆分,桶往往使用列的哈希值对数 据打散,并分发到各个不同的桶中从而完成数据的分桶过程。
        注意,hive使用对分桶所用的值进行hash,并用hash结果除以桶的个数做 取余运算 的方式来桶, 保证了每个桶中都有数据,但每个桶中的数据条数 不一定相等
        如果另外一个表也按照同样的规则分成了一个个小文件。 两个表join的时候 ,就不必要扫描整个表, 只需要匹配相同分桶的数据即可,从而 提升效率
        在数据量足够大的情况下,分桶比分区有更高的查询效率。

2.数据采样

        在真实的大数据分析过程中,由于数据量较大, 开发和自测的过程比较慢 ,严重影响系统的开发进 度。此时就可以使用分桶来进行数据采样。采样使用的是一个 具有代表性的查询结果 而不是全部结果, 通过对采样数据的分析,来达到 快速开发和自测 的目的,节省大量的研发成本。

3.分桶和分区的区别

        1. 分桶和分区两者不干扰, 可以把分区表进一步分桶
        2. 分桶对数据的处理比分区 更加细粒度化 :分区针对的是数据的存储路径; 分桶针对的是数据 文件
        3. 分桶是按照列的哈希函数进行分割的,相对 比较平均 ;而分区是按照列的值来进行分割的, 容易造成 数据倾斜

4. 文本数据处理

        注意 :对于分桶表, 不能使用load data的方式进行数据插入操作 ,因为load data导入的数据不会 有分桶结构。
        如何避免针对桶表使用load data插入数据的误操作呢?
--限制对桶表进行load操作
set hive.strict.checks.bucketing = true;
        也可以在CM的hive配置项中修改此配置,当针对桶表执行load data操作时会报错。

        那么对于文本数据如何处理呢?  文章来源地址https://www.toymoban.com/news/detail-450470.html

        (1. 先创建 临时表 ,通过load data将txt文本导入临时表。
--创建临时表
create table temp_buck(id int, name string)
row format delimited fields terminated by '\t';
--导入数据
load data local inpath '/tools/test_buck.txt' into table temp_buck;
        (2. 使用 insert select 语句间接的把数据从临时表导入到分桶表。
--启用桶表
set hive.enforce.bucketing=true;
--限制对桶表进行load操作
set hive.strict.checks.bucketing = true;
--insert select
insert into table test_buck select id, name from temp_buck;
--分桶成功

到了这里,关于Hive为什么要分桶?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 为什么hive表不经常用索引

    Hive 表不经常使用索引的主要原因是由于其设计初衷和使用场景的特点。下面是一些可能的解释: Hive 主要用于处理大规模数据集的批量分析任务,而不是对单个记录的实时查询。对于批处理任务,全表扫描通常是更为高效的方式,因为索引需要维护额外的数据结构并带来一

    2024年02月16日
    浏览(39)
  • 大数据面试题:HBase为什么查询快

    面试题来源: 《大数据面试题 V4.0》 大数据面试题V3.0,523道题,679页,46w字 可回答:1)HBase为什么读快;2)HBase是根据rowkey查询,当数据量相当大的时候,是怎么读的很快的 参考答案: 1、基于LSM树的存储方式 HBase采用基于LSM树的存储方式,这种存储方式将数据分为内存和

    2024年02月12日
    浏览(42)
  • ElasticSearch(七):ES查询速度为什么那么快

    介绍给大家一个开源SpringCloud项目。整合了大部分开源中间件,详情信息可以查看文档: spring cloud开源组件开发 另外自己以后博客所讲解的代码内容,都会我的Git上同步(GitHub同步)GIT地址 ES使用的数据结构是倒排索引,在对搜索内容进行分词的时候,会根据搜索内容分词结

    2023年04月08日
    浏览(78)
  • ElasticSearch第七讲 ES查询速度为什么那么快

    介绍给大家一个开源SpringCloud项目。整合了大部分开源中间件,详情信息可以查看文档: spring cloud开源组件开发 另外自己以后博客所讲解的代码内容,都会我的Git上同步(GitHub同步)GIT地址 ES使用的数据结构是倒排索引,在对搜索内容进行分词的时候,会根据搜索内容分词结

    2023年04月25日
    浏览(54)
  • ElasticSearch第七讲:ES查询速度为什么那么快

    介绍给大家一个开源SpringCloud项目。整合了大部分开源中间件,详情信息可以查看文档: spring cloud开源组件开发 另外自己以后博客所讲解的代码内容,都会我的Git上同步(GitHub同步)GIT地址 ES使用的数据结构是倒排索引,在对搜索内容进行分词的时候,会根据搜索内容分词结

    2023年04月19日
    浏览(48)
  • Mysql8.0为什么取消了缓存查询的功能

    首先我们介绍一下 MySQL的缓存机制 【MySQL缓存机制】 简单的说就是缓存sql文本及查询结果,如果运行完全相同的SQL,服务器直接从缓存中取到结果,而不需要再去解析和执行SQL。 但如果表中任何数据或是结构发生改变,包括INSERT、UPDATE、DELETE、TRUNCATE、ALTER TABLE、DROP TABLE或

    2023年04月20日
    浏览(52)
  • mysql查询慢是为什么 怎么改善43.242.205.12

    MySQL查询速度慢是一个令人头痛的问题,它可能会导致应用程序性能下降,影响用户体验。为了解决这个问题,需要了解MySQL查询速度慢的原因,并采取相应的改善措施。 一、MySQL查询速度慢的原因43.242.205.1 查询语句不合理 不合理的查询语句是导致MySQL查询速度慢的常见原因

    2024年02月12日
    浏览(39)
  • pycharm创建的虚拟环境为什么用conda env list命令查询不到?

    问题描述:pycharm创建的虚拟环境为什么用conda env list命令查询不到。 pycharm开发环境可以创建虚拟环境,目的是为隔绝其他环境种库带来的版本干扰,但是发现一个问题,无论是在windows终端、anaconda终端、Pycharm开发环境中的终端使用conda env list命令都查不到venv环境。

    2024年02月10日
    浏览(46)
  • Hive数据存储格式有哪些?TextFile、SequenceFile、RCFile、ORCFile、Parquet有什么区别?为什么绝大多数都使用ORCFile、Parquet格式?

    Hive 的数据存储,是 Hive 操作数据的基础。 选择一个合适的底层数据存储文件格式,即使在不改变当前 Hive SQL 的情况下,性能也能得到数量级的提升 。 这种优化方式对 MySQL 等关系型数据库有些类似,选择不同的数据存储引擎,代表着不同的数据组织方式,对于数据库的表现

    2024年02月02日
    浏览(55)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包