impala的具体操作2-hive的分区分桶解释

impala的具体操作2-hive的分区分桶解释 

 

JDBC

impala的具体操作2-hive的分区分桶解释

impala的具体操作2-hive的分区分桶解释 

impala的具体操作2-hive的分区分桶解释

在解释一下什么是分区什么是分桶? 

hive的分区、分桶

什么叫做分区

什么叫做表

分区:

hdfs 表 就是目录

一级目录 就a目录是其中的一张表

分区表 他的子目录

1 号数据来了 就是将1数据放入1目录

2号数据来了 就是将2数据放入2目录

假如说 sql来了 from table where 日期 date =1

只有这个1目录下的数据 参与mr的计算inputpath计算

分区就是规避io量 ······

假如说这些1 2 目录全量数据为10个T

如果你做了分区

那么where条件 等于1天 那么计算就是1T

9t不参与计算

===================================

什么叫做分桶

a目录 变成一张表 t表

分桶干什么用的

假设分成3个桶

目录成 0桶一个目录 1桶一个目录 2桶一个目录

 

又是1号数据来了

现在将1号数据每条记录 做哈希取模对着三个桶

那么就是每条数据在不同的桶

1号去这三个桶

2号通样 做取模

同样放到不同的桶

好处:相同省份的数据都会去一个桶里

就是去一个目录了 相同省份数据一定缅街在一起了

如果你的sql 对省份

做count sum avg 聚合操作

效果会非常好。。。。。

=====================================

例:

假设数据源没有分桶

数据源分成俩个块 很多列

上下都有很多sxt

计算的时候 一块产生一个切片

一块产生一个切片

会做shuffler    拉取数据

shuffler的时候 io的时候 数据量比较大

====================================

大数据的情况下

都不可能避免读入io和shuffler(拉取数据)    IO的情况

不管你是 内存计算 还是磁盘io计算

还是流式计算或批次计算(离式计算)

都避免不了

读取IO 用分区

计算shuffler  io 用分桶

结合使用 整合在一起用