转载:https://blog.csdn.net/u010003835/article/details/80911215
https://blog.csdn.net/Samaritan_H/article/details/79090103
桶(SMB)
物理上,每个桶就是表(或分区)目录里的一个文件。
smb的设计是为了解决大表和大表之间的join的。简单的说下她的思想:大表化成小表,map side join 解决。经典的分而治之的思想。
对一个表或者一个分区,可以将其划分为更细的数据块,桶。在hive中,分桶的方式采取的是:对列的值进行hash除以桶的数量取余 ;
为什么要对数据进行分桶:
桶给表加上了额外的结构,在进行某些查询的时候可以利用这个结构进行高效的查询;例如: 对于两个数据表,某两列都做了桶划分,可以使用map端的join高效的完成join(桶和桶之间的join,大大减少了join的次数)。
对于数据取样更加高效