博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hive --桶
阅读量:6269 次
发布时间:2019-06-22

本文共 1568 字,大约阅读时间需要 5 分钟。

【 		精解: 			创建桶表时,指定桶的个数,分桶的依据字段,hive就可以自动将数据分桶存储。查询时只需要遍历一个桶里的数据,或者遍历部分桶,这样就提高了查询效率。 	】 	对于每一个表(table)或者分区,hive 可以进一步组织成桶,也就是说桶是更为细粒度的数据范围划分。hive也是针对某一列进行桶的组织。 	hive采用对列hash,然后除以桶的个数求余的方式决定该条记录存放在哪个桶当中。 	`set hive.enforce.bucketing = true;` 	把表(或者分区)组织成桶(Bucket)有两个理由: 		1、获得更高的查询处理效率。桶为表加上了额外的结构,hive在处理有些查询时能利用这个结构。具体而言,连接两个在(包含连接列的) 		相同列划分了桶的表,可以使用map端连接(map-side join)高效的实现。比如join操作。对于join操作两个表有一个相同的列,如果对这 		两个表都进行桶操作。那么将保存相同列值得桶进行join操作就可以,可以大大减少join的数据。 		2、使用样(sampling)更高效。在处理大规模数据集时,在开发和修改查询的阶段,如果能在数据集的一小部分数据上试运行查询,会带来很多方便。 	1、创建带分区带桶的table: 		create table bucketed_user 		( 			id int, 			name string 		)  		partitioned by (stat_date string) 		clustered by (id) sorted by (name) into 4 buckets  		row format delimited fields terminated by '\t' [stored as textfile]; 		-clustered by 是指根据id的值进行hash后取模分桶个数,根据得到的结果,确定这行数据分入哪个桶中,这样的分法,可以确保相同id的数据放入同一个桶中。 					  而经销商的线索数据,大部分是根据id进行查询的。这样大部分情况下是只需要查询一个桶中的数据就可以了。 		-sorted by 是指定桶中的数据以哪个字段进行排序,排序的好处是,在join操作时能获得很高的效率。 		-into 4 buckets 是指定一共分多少个桶。 		-在hdfs上存储时,一个桶存入一个文件中,这样根据id进行查询时,可以快速确定数据存在于哪个桶中,而只遍历一个桶可以提供查询效率。 		--插入数据 			>from bucketed_user_tmp 			>insert overwrite table bucketed_user partition(stat_date="20171208") 			>select id,name where stat_date="20171207" sort by id; 		--取样查看 			>select * from bucketed_user tablesample(bucket 2 out of 2 on id); 		首先,我们来看如何告诉hive一个表应该被划分成桶。我们使用clustered by子句来指定划分桶所用的列和要划分的桶的个数: 		create table bucketed_user  		( 			id int, 			name string 		) 		clustered by (id) into 4 buckets; 		在这里,我们使用用户ID来确定如何划分桶

  

转载于:https://www.cnblogs.com/mologa-jie/p/8170185.html

你可能感兴趣的文章
《设计模式》结构型模式
查看>>
[javase学习笔记]-8.3 statickeyword使用的注意细节
查看>>
Spring集成RabbitMQ-使用RabbitMQ更方便
查看>>
Nginx 设置域名转向配置
查看>>
.net core 实现简单爬虫—抓取博客园的博文列表
查看>>
FP-Tree算法的实现
查看>>
Android 用Handler和Message实现计时效果及其中一些疑问
查看>>
Dos命令删除添加新服务
查看>>
C#.NET常见问题(FAQ)-索引器indexer有什么用
查看>>
hadoop YARN配置参数剖析—MapReduce相关参数
查看>>
Java 正则表达式详细使用
查看>>
【ADO.NET】SqlBulkCopy批量添加DataTable
查看>>
SqlServer--bat批处理执行sql语句1-osql
查看>>
Linux系列教程(十八)——Linux文件系统管理之文件系统常用命令
查看>>
laravel安装初体验
查看>>
用yum查询想安装的软件
查看>>
TIJ -- 吐司BlockingQueue
查看>>
数据库分页查询
查看>>
[编程] C语言枚举类型(Enum)
查看>>
[Javascript] Compose multiple functions for new behavior in JavaScript
查看>>