Hive优化1---分区、桶、index
2017-08-22 19:55
337 查看
1、分区表:分区是目录。
------------------
//创建分区表
CREATE TABLE custs
(
id int,
name string ,
age int
)
PARTITIONED BY (prov string, city string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
STORED AS TEXTFILE;
//添加分区
alter table custs add PARTITION (prov='hebei', city='baoding') PARTITION (prov='hebei', city='shijiazhuang');
//查看分区
SHOW PARTITIONS custs;
//删除分区
alter table custs drop partition partition(prov='hebei',city='shijizhuang') ;
//加载数据到分区
load data local inpath '/home/centos/cust.txt' into table custs partition(prov='hebei',city='baoding') ;
//按照分区查询
select * from custs where city = 'baoding' ;
2、桶表:桶表是文件。
--------------
//创建桶表
CREATE TABLE buck
(
id int,
name string ,
age int
)
CLUSTERED BY (id) INTO 3 BUCKETS
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
STORED AS TEXTFILE;
//桶的数量确定标准
避免桶内的数据量过大或者过小,一般以数据块的2倍为宜。
//设置map个数和强行分桶
set map.reduce.tasks = 2;
set hive.enforce.bucketing = true;
3.index
能够排序,使用折半查找。
创建的索引对应一张表。内容为空
索引表中存放的字段值和对应的文件以及偏移量,如果数据发生改变,需要rebuild索引.
//创建索引,生成索引表
CREATE INDEX idx_emp_name ON TABLE employee(name) AS 'COMPACT' WITH DEFERRED REBUILD;
//重建索引值
ALTER INDEX idx_emp_name ON employee REBUILD;
//删除索引
drop index idx_emp_name on employee;
[创建部门索引]
CREATE INDEX idx_emp_deptnum ON TABLE employee(dept_num) AS 'COMPACT' WITH DEFERRED REBUILD;
//重建索引值
ALTER INDEX idx_emp_deptnum ON employee REBUILD;
------------------
//创建分区表
CREATE TABLE custs
(
id int,
name string ,
age int
)
PARTITIONED BY (prov string, city string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
STORED AS TEXTFILE;
//添加分区
alter table custs add PARTITION (prov='hebei', city='baoding') PARTITION (prov='hebei', city='shijiazhuang');
//查看分区
SHOW PARTITIONS custs;
//删除分区
alter table custs drop partition partition(prov='hebei',city='shijizhuang') ;
//加载数据到分区
load data local inpath '/home/centos/cust.txt' into table custs partition(prov='hebei',city='baoding') ;
//按照分区查询
select * from custs where city = 'baoding' ;
2、桶表:桶表是文件。
--------------
//创建桶表
CREATE TABLE buck
(
id int,
name string ,
age int
)
CLUSTERED BY (id) INTO 3 BUCKETS
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
STORED AS TEXTFILE;
//桶的数量确定标准
避免桶内的数据量过大或者过小,一般以数据块的2倍为宜。
//设置map个数和强行分桶
set map.reduce.tasks = 2;
set hive.enforce.bucketing = true;
3.index
能够排序,使用折半查找。
创建的索引对应一张表。内容为空
索引表中存放的字段值和对应的文件以及偏移量,如果数据发生改变,需要rebuild索引.
//创建索引,生成索引表
CREATE INDEX idx_emp_name ON TABLE employee(name) AS 'COMPACT' WITH DEFERRED REBUILD;
//重建索引值
ALTER INDEX idx_emp_name ON employee REBUILD;
//删除索引
drop index idx_emp_name on employee;
[创建部门索引]
CREATE INDEX idx_emp_deptnum ON TABLE employee(dept_num) AS 'COMPACT' WITH DEFERRED REBUILD;
//重建索引值
ALTER INDEX idx_emp_deptnum ON employee REBUILD;
相关文章推荐
- 大数据Hive的案例、参数、动态分区、分桶、视图、索引、运行方式、权限管理、Hive的优化_03_03
- 大数据Spark “蘑菇云”行动第90课:Hive中Join电影店铺系统案例和性能优化、Index和Bucket案例实战
- 016-Hadoop Hive sql语法详解6-job输入输出优化、数据剪裁、减少job数、动态分区
- Hive-如何基于分区优化
- Hive性能优化之ORC索引–Row Group Index vs Bloom Filter Index
- 数据仓库(八)---hive的性能优化---hive动态分区
- Hive 分区优化以及jon 优化
- 转:Hive性能优化之ORC索引–Row Group Index vs Bloom Filter Index
- 数据仓库(七)---hive的性能优化---hive的分区和分桶
- mysql hive sqoop 分区,优化
- 深入浅出Hive企业级架构优化视频教程
- hive的基本优化笔记
- Hive高级进阶与优化
- Hive优化总结
- hive优化之自动合并输出的小文件
- 大数据Spark “蘑菇云”行动第101课:Hive性能调优之企业级数据倾斜解决方案及对Job数目的优化
- hive优化之------控制hive任务中的map数和reduce数
- MySQL架构优化:定时计划任务与表分区
- 十六、mysql 分区之 简单sql优化2
- hive 动态分区太多问题