hive 修改分桶数 分桶表_hive中的分桶表

桶表也是一种用于优化查询而设计的表类型。

创建通表时,指定桶的个数、分桶的依据字段,hive就可以自动将数据分桶存储。

查询时只需要遍历一个桶里的数据,或者遍历部分桶,这样就提高了查询效率

------创建订单表

create table user_leads

(

leads_id string,

user_id string,

user_id string,

user_phone string,

user_name string,

create_time string

)

clustered by (user_id)

sorted by(leads_id)

into 10 buckets

row format delimited fields terminated by '\t'

stored as textfile;

clustered by是指根据 user_id 的值进行哈希后模除分桶个数,

根据得到的结果,确定这行数据分入哪个桶中,这样的分法,

可以确保相同 user_id 的数据放入同一个桶中。

而经销商的订单数据,大部分是根据user_id进行查询的。

这样大部分情况下是只需要查询一个桶中的数据就可以了。

sorted by 是指定桶中的数据以哪个字段进行排序,排序的好处是,在join操作时能获得很高的效率。

into 10 buckets是指定一共分10个桶

在HDFS上存储时,一个桶存入一个文件中,这样根据user_id进行查询时,可以快速确定数据存在于哪个桶中,而只遍历一个桶可以提供查询效率

加载到分桶表

------先创建普通临时表

create table user_leads_tmp

(

leads_id string,

user_id string,

user_id string,

user_phone string,

user_name string,

create_time string

)

row format delimited fields terminated by ','

stored as textfile;

------数据载入临时表

load data local inpath '/home/hadoop/lead.txt' overwrite into table user_leads_tmp;

------导入分桶表

set hive.enforce.bucketing = true; -- 为true就是设置为启用分桶。

insert overwrite table user_leads select * from user_leads_tmp;

drop table sospdm.tmp_yinfei_test;

create table sospdm.tmp_yinfei_test

(

id string,cust_num string

)partitioned by (statis_date string) clustered by (id) sorted by (id) into 5 buckets

row format delimited fields terminated by ','

;

1,cust_num_1

2,cust_num_2

3,cust_num_3

4,cust_num_4

5,cust_num_5

6,cust_num_6

7,cust_num_7

8,cust_num_8

9,cust_num_9

drop table sospdm.tmp_yinfei_test_tmp;

create table sospdm.tmp_yinfei_test_tmp

(

id string,cust_num string

)partitioned by (statis_date string)

row format delimited fields terminated by ','

;

load data local inpath '/home/sospdm/yf/test.txt' overwrite into table tmp_yinfei_test_tmp partition (statis_date='20190408');

set hive.enforce.bucketing = true;

insert overwrite table tmp_yinfei_test partition(statis_date='20190408') select id,cust_num from tmp_yinfei_test_tmp;

Hive学习笔记——Hive中的分桶

对于每一个表(table)或者分区, Hive可以进一步组织成桶,也就是说桶是更为细粒度的数据范围划分.Hive也是针对某一列进行桶的组织.Hive采用对列值哈希,然后除以桶的个数求余的方式决定该条记 ...

Hive 学习之路(五)—— Hive 分区表和分桶表

一.分区表 1.1 概念 Hive中的表对应为HDFS上的指定目录,在查询数据时候,默认会对全表进行扫描,这样时间和性能的消耗都非常大. 分区为HDFS上表目录的子目录,数据按照分区存储在子目录中.如 ...

Hive 系列(五)—— Hive 分区表和分桶表

一.分区表 1.1 概念 Hive 中的表对应为 HDFS 上的指定目录,在查询数据时候,默认会对全表进行扫描,这样时间和性能的消耗都非常大. 分区为 HDFS 上表目录的子目录,数据按照分区存储在子 ...

入门大数据---Hive分区表和分桶表

一.分区表 1.1 概念 Hive 中的表对应为 HDFS 上的指定目录,在查询数据时候,默认会对全表进行扫描,这样时间和性能的消耗都非常大. 分区为 HDFS 上表目录的子目录,数据按照分区存储在子 ...

hive 分区表和分桶表

1.创建分区表 hive> create table weather_list(year int,data int) partitioned by (createtime string,area ...

第2节 hive基本操作:11、hive当中的分桶表以及修改表删除表数据加载数据导出等

分桶表 将数据按照指定的字段进行分成多个桶中去,说白了就是将数据按照字段进行划分,可以将数据按照字段划分到多个文件当中去 开启hive的桶表功能 set hive.enforce.bucketing= ...

Hive为什么要分桶

对于每一个表(table)或者分区, Hive可以进一步组织成桶,也就是说桶是更为细粒度的数据范围划分.Hive也是针对某一列进行桶的组织.Hive采用对列值哈希,然后除以桶的个数求余的方式决定该条记 ...

一起学Hive——创建内部表、外部表、分区表和分桶表及导入数据

Hive本身并不存储数据,而是将数据存储在Hadoop的HDFS中,表名对应HDFS中的目录/文件.根据数据的不同存储方式,将Hive表分为外部表.内部表.分区表和分桶表四种数据模型.每种数据模型各有 ...

Hive 教程(四)-分区表与分桶表

在 hive 中分区表是很常用的,分桶表可能没那么常用,本文主讲分区表. 概念 分区表 在 hive 中,表是可以分区的,hive 表的每个区其实是对应 hdfs 上的一个文件夹: 可以通过多层文件夹 ...

随机推荐

scikit-learn预处理实例之一:使用FunctionTransformer选择列

本例展示怎样在一个管道中使用FunctionTransformer.如果你知道你的数据集的第一主成分与分类任务无关,你可以使用FunctionTransformer选取除PCA转化的数据的第一列之外的 ...

python常用文件处理函数_1

1.range()函数 函数原型:range(start,end,scan) 参数含义:start:计数从start开始.默认是从0开始的,如range()等价于range(0,5)  end:计数到 ...

CSS成长之路----知识点篇

一,ul--li列表水平排列,切居中对齐 主要是利用Li标签中的display属性.设置为display:inline,使li纵向排布,且能够使用text-align:center;使其居中显示 HT ...

使用jQuery开发一个带有密码强度检验的超酷注册页面

在今天的jQuery教程中,我们将介绍如何使用jQuery和其它相关的插件来生成一个漂亮的带有密码强度检验的注册页面,希望大家喜欢! 相关的插件和类库 complexify - 一个密码强度检验jQu ...

Careercup - Microsoft面试题 - 6543214668414976

2014-05-11 02:56 题目链接 原题: Write a function called FooBar that takes input integer n and prints all t ...

WebService 实现BS环境与BS环境传递参数,根据参数生成txt文档

客户端:

dedecms 修改标题长度可以修改数据库

数据表为dede__archives 字段为title 首先要在 a.系统->系统基本参数->其它选项->文章标题长度 b.系统->SQL命令行工具 alter table # ...

Linux 常用命令解析和Bash Shell使用示例脚本演示

 摘要 Linux命令是基于文本格式输入输出的一种程序,依照Unix哲学中强调的程序功能简单,输入宽松,输出严谨,各种程序组合能够具有更强大的功能,而具有这样的灵活性的主要原因是Linux规定程序 ...

对 Servlet 的改进--------Struts2 引入

通过上一篇博客:Servlet 的详解 http://www.cnblogs.com/ysocean/p/6912191.html,我们大致知道了 Servlet 的基本用法.但是稍微分析一下 Ser ...

2019 Valentine's Day 圣地巡礼和WPR003N开箱刷U-boot记录

即兴打出这个标题,似乎性息量有点大,后面的内容真的和你想象的是一样的吗? 自上一篇blog告别这里有多少年了,掐指一算,今天是一个回归的日子,看着这里搭上云之路,渐渐的变成了云主机中的一员,感慨时事境 ...

你可能感兴趣的:(hive,修改分桶数,分桶表)