Hive动态分区和分桶

news/2024/7/5 2:07:37

Hive动态分区和分桶

1、Hive动态分区

1、hive的动态分区介绍

​ hive的静态分区需要用户在插入数据的时候必须手动指定hive的分区字段值,但是这样的话会导致用户的操作复杂度提高,而且在使用的时候会导致数据只能插入到某一个指定分区,无法让数据散列分布,因此更好的方式是当数据在进行插入的时候,根据数据的某一个字段或某几个字段值动态的将数据插入到不同的目录中,此时,引入动态分区。

2、hive的动态分区配置
--hive设置hive动态分区开启
	set hive.exec.dynamic.partition=true;
	默认:true
--hive的动态分区模式
	set hive.exec.dynamic.partition.mode=nostrict;
	默认:strict(至少有一个分区列是静态分区)
--每一个执行mr节点上,允许创建的动态分区的最大数量(100)
	set hive.exec.max.dynamic.partitions.pernode;
--所有执行mr节点上,允许创建的所有动态分区的最大数量(1000)	
	set hive.exec.max.dynamic.partitions;
--所有的mr job允许创建的文件的最大数量(100000)	
	set hive.exec.max.created.files;
3、hive动态分区语法
--Hive extension (dynamic partition inserts):
	INSERT OVERWRITE TABLE tablename PARTITION (partcol1[=val1], partcol2[=val2] ...) 		select_statement FROM from_statement;
	INSERT INTO TABLE tablename PARTITION (partcol1[=val1], partcol2[=val2] ...) 			select_statement FROM from_statement;
-- 案例(如果像是自动按照字段分区,就用指定分区值,否则数据会全部存到指定分区值目录下)
INSERT INTO TABLE psnforage_p PARTITION(age,sex) select id, name, likes, address,age,sex from psnforage;

2、Hive分桶

1、Hive分桶的介绍
	Bucketed tables are fantastic in that they allow much more efficient sampling than do non-bucketed tables, and they may later allow for time saving operations such as mapside joins. However, the bucketing specified at table creation is not enforced when the table is written to, and so it is possible for the table's metadata to advertise properties which are not upheld by the table's actual layout. This should obviously be avoided. Here's how to do it right.

​ 注意:

​ 1、Hive分桶表是对列值取hash值得方式,将不同数据放到不同文件中存储

​ 2、对于hive中每一个表、分区都可以进一步进行分桶

​ 3、由列的hash值除以桶的个数来决定每条数据划分在哪个桶中

2、Hive分桶的配置
--设置hive支持分桶
	set hive.enforce.bucketing=true;
3、创建分桶
CREATE TABLE user_info_bucketed(user_id BIGINT, firstname STRING, lastname STRING)
COMMENT 'A bucketed copy of user_info'
PARTITIONED BY(ds STRING)
CLUSTERED BY(user_id) INTO 256 BUCKETS
--设置hive支持分桶
	set hive.enforce.bucketing=true;
3、Hive分桶的抽样查询
--案例
	select * from bucket_table tablesample(bucket 1 out of 4 on columns)
--TABLESAMPLE语法:
	TABLESAMPLE(BUCKET x OUT OF y)
		x:表示从哪个bucket开始抽取数据(桶从1开始)
		y:必须为该表总bucket数的倍数或因子

http://lihuaxi.xjx100.cn/news/1908718.html

相关文章

【Docker】基于华为 openEuler 应用 Docker 镜像体积压缩

书接 openEuler 系列文章(可以翻看测试系列),本次跟大家说说如何将 Java 包轻量化地构建到 openEuler 镜像中且保持镜像内操作系统是全补丁状态。 之前我们都是使用现成的 jdk 镜像进行构建的,如下图: FROM ibm-seme…

Flink系列之:Savepoints

Flink系列之:Savepoints 一、Savepoints二、分配算子ID三、Savepoint 状态四、算子五、触发Savepoint六、Savepoint 格式七、触发 Savepoint八、使用 YARN 触发 Savepoint九、使用 Savepoint 停止作业十、从 Savepoint 恢复十一、跳过无法映射的状态恢复十二、Resto…

物流研究:冷链运输、末端运送与供应链的演进

导言 物流是现代社会不可或缺的一部分,冷链运输、末端运送以及供应链成为当前物流领域的研究热点。本文将深入研究这几个主要方向的发展过程、遇到的问题、解决过程,探讨未来的可用范围,并分析在各国的应用和未来的研究趋势。此外&#xff0c…

CRM系统的秘密:如何帮助你实现客户跟进的全面管理和智能分析?

众所周知,在销售开始跟进客户时,制定一个详细的跟进计划是至关重要的,尤其当客户方涉及多个联系人时,合理的管理方法能有效提升销售业绩。现在跟着小编一起了解下,CRM系统如何帮助企业精准跟进客户吧? 一、…

【权威认证】飞凌嵌入式FET113i-S核心板国产化率达100%

经中国赛宝实验室的严格认证,飞凌嵌入式FET113i-S核心板的电子元器件国产化率达100%——这款超高性价比的全国产核心板为新基建领域的国产化替代升级注入了新动力。 关于【中国赛宝实验室】 中国电子产品可靠性与环境试验研究所(工业和信息化部电子第五研…

大数据---34.HBase数据结构

一、HBase简介 HBase是一个开源的、分布式的、版本化的NoSQL数据库(即非关系型数据库),依托Hadoop分布式文件系统HDFS提供分布式数据存储,利用MapReduce来处理海量数据,用Zookeeper作为其分布式协同服务,一…

【计算机网络】TCP心跳机制、TCP粘包问题

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 更多计算机网络知识专栏&#xff1a;计算机网络&#x1f525; 给大家跳段…

Flask解决接口跨域问题

1、什么是跨域CROS CORS&#xff08;Cross-Origin Resource Sharing&#xff0c;跨域资源共享&#xff09;是一种浏览器安全策略&#xff0c;用于控制在一个网页应用中如何让一个域的Web页面能够请求另一个域的资源。在Web开发中&#xff0c;由于同源策略&#xff08;Same-Ori…