美文网首页
Hive 桶 区

Hive 桶 区

作者: 一个神经质的工程师 | 来源:发表于2020-03-12 11:33 被阅读0次

分区

分区列其实在表中并不存在,每个分区键为表的存储添加了一个目录,但是查询会返回这一列,即使数据文件中没有存储这个数据,相当于返回了目录名称。

切忌对表过度分区,这样会导致每个文件很小,从而导致hadoop存放较慢,而且分区会增加数据加载跟数据检索的开销。

分区表加字段必须使用casecade

参数

开启支持动态分区

set hive.exec.dynamic.partition=true;

set hive.exec.dynamic.partition.mode=nostrict;

默认:strict(至少有一个分区列是静态分区)

set hive.exec.max.dynamic.partitions:动态分区的上限,默认1000;

set hive.exec.max.dynamic.partitions.pernode 每个mapper/reducer节点可以创建的最大动态分区数,默认100;

分桶

适合于非常小的分区,分桶让你可以为每个表的分桶列定义桶的最大数据,每一个桶就是一个文件,分桶基于散列算法分割,提升join性能,只关联相同的桶。分桶不会为当前表建立一个虚拟列。

clustered by (列) into n buckets 将列的值用于散列函数分发到n个桶中去,如果分桶的列的值是非倾斜的,那么数据会均衡分布。

参数:

set  hive.enforce.bucketing = true; 开启支持分桶,自动按照分桶表的bucket 进行分桶,运行时会根据bucket的个数自动分配reduce task个数

抽样语法

select * from bucket_table tablesample(bucket 1 out of 4 on columns);

TABLESAMPLE语法:

TABLESAMPLE(BUCKET x OUT OF y)

x:表示从哪个bucket开始抽取数据

y:必须为该表总bucket数的倍数或因子  (Y表示相隔多少个桶再次抽取)

参考:https://www.cnblogs.com/cac2020/p/10383825.html

更多参数参考 https://www.cnblogs.com/skyl/p/4780340.html

相关文章

  • Hive 桶 区

    分区 分区列其实在表中并不存在,每个分区键为表的存储添加了一个目录,但是查询会返回这一列,即使数据文件中没有存储这...

  • Hive 1.2.1 分区和分捅

    1. 借鉴 Hive学习笔记——Hive中的分桶Hive分区和分桶(0925)HIVE表索引,分区和分桶的区别 2...

  • Hive 分桶

    Hive 分桶 分桶对于每一个表或者分区,Hive可以进一步组织成桶,也就是更为细粒度的数据范围划分Hive是针对...

  • hive桶表

    hive桶表 1 桶表的概念 在hive中,数据库、表、分区都是对应到hdfs上的路径,当往表中上传数据的时候,数...

  • Hive 1.2.1 排序

    1. 借鉴 HIVE的四种排序,以及分区分桶谈谈hive的order by ,sort by ,distribut...

  • Hive桶表

    分桶及抽样查询 分桶表数据存储类似与MR分区分区针对的是数据的存储路径;分桶针对的是数据文件。分区提供一个隔离数据...

  • Hive分桶

    Hive分桶 分桶表是对列值取哈希值的方式,将不同数据放到不同文件中存储。 对于hive中每一个表、分区都可以进一...

  • Hive分桶

    提问:为什么要创建分桶表呢? 我认为有以下两点原因: (1):分桶表是为了在分区表的基础上,进...

  • Hive 分区/分桶

    分区/桶 Hive 分区 Hive的分区方式:由于Hive实际上是数据文件在HDFS存在的目录区分分区字段是虚拟列...

  • 案例详解__HIVE中内部表、外部表、分区表和分桶表

    目录一、Hive建表语法二、内部表外部表三、分区表四、分桶表 Hive在建表时可指定内部表、外部表、分区表和分桶表...

网友评论

      本文标题:Hive 桶 区

      本文链接:https://www.haomeiwen.com/subject/ofxkjhtx.html