hive中的分区和桶eclipse
Hive 把表组织成“分区” Partition。 这是一种根据“分区列”(Partition column,如日期)的值对表进行粗略划分的机制,使用分区能够加快数据分片(Slice)的查询速度spa
表和分区能够进一步分为“桶”(Bucket)它会为数据提供额外的结果以得到更高效率的查询处理,例如,经过根据用户ID来划分桶,咱们能够早全部用户集合的随机样本上快速计算基于用户的查询。日志
下面以日志文件进行考虑,日志文件中的每条记录包含一个分区,咱们通常根据日期来进行分区,同一天的记录会放在相同的区中。ip
分区是在建立表的时候用partition by 子句定义的,该子句须要定义列的列表it
桶的话,能够把该表分红规定的几个部分,每一个部分是根据制定的列取模来决定的 下面咱们就是根据ts来对4取模决定桶的
io
以下:效率
在咱们把数据加载到分区表的时候,要显示的指定分区值,好比咱们在目录下面有一个文件 20140418GB.txt 里面有内容
cli
咱们将该数据加载到表logs中im
如今来查看HDFS结构和里面的数据数据
咱们在eclipse中查看
可是奇怪的是,进去里面的目录咱们能够看到
这里并无出现分桶,而后咱们进行数据查找,以分桶的形式
结果以下
这个结果包括了全部三个文件中,符合要求的记录
我曾单独的使用过度桶,实验显示,若是单独分桶那么将会看见所分桶的各片,可是分区和分桶一块儿来的话,却只能看见分区的目录
咱们是否是能够这样理解,当分区和分桶一块儿来时,分好的区是主流,咱们能够看到分区中的目录,可是分的桶,咱们再也不看见,结构存在,只是不显示
而咱们进行查找时,就能够用上了