Hive中的存储桶是一种数据组织技术。它类似于Hive中的分区功能, 具有将功能强大的功能将大型数据集划分为更易于管理的部分(称为存储桶)的功能。因此, 当分区的实现变得困难时, 我们可以在Hive中使用存储桶。但是, 我们还可以在存储分区中进一步划分分区。
蜂巢中的桶装工作
文章图片
- 存储的概念基于哈希技术。
- 在此, 计算当前列值和所需桶数的模块(假设F(x)%3)。
- 现在, 基于结果值, 数据将存储到相应的存储桶中。
- 首先, 选择我们要在其中创建表的数据库。
hive>
use showbucket;
文章图片
- 创建一个虚拟表来存储数据。
hive>
create table emp_demo (Id int, Name string , Salary float)row format delimitedfields terminated by ', ' ;
文章图片
- 现在, 将数据加载到表中。
hive>
load data local inpath '/home/codegyani/hive/emp_details' into table emp_demo;
文章图片
- 使用以下命令启用存储桶:-
hive>
set hive.enforce.bucketing = true;
- 使用以下命令创建存储表:-
hive>
create table emp_bucket(Id int, Name string , Salary float)clustered by (Id) into 3 bucketsrow format delimitedfields terminated by ', ' ;
文章图片
- 现在, 将虚拟表的数据插入存储桶的表中。
hive>
insert overwrite table emp_bucket select * from emp_demo;
文章图片
文章图片
文章图片
- 在这里, 我们可以看到数据分为三个存储桶。
文章图片
- 让我们检索存储桶0的数据。
文章图片
【Hive中的桶】根据哈希函数:6%3 = 0 3%3 = 0因此, 这些列存储在存储区0中。
- 让我们检索存储桶1的数据。
文章图片
根据哈希函数:7%3 = 1 4%3 = 1 1%3 = 1因此, 这些列存储在存储区1中。
- 让我们检索存储桶2的数据。
文章图片
根据哈希函数:8%3 = 2 5%3 = 2 2%3 = 2因此, 这些列存储在存储区2中。
推荐阅读
- MapReduce中的数据流
- Apache Spark字数示例
- Apache Spark教程
- 专业人士必备的10款最佳流程图软件合集
- 专业人士的10款最佳组织结构图软件合集
- Mac最佳股票交易软件有哪些(哪个最适合你?)
- Android框架之高速开发框架xUtil
- [Android Studio] 取消引用库打包出现异常-- provided dependencies can only be jars
- Android:contentDescription 不是无用