分区
定义:分区表是指按照数据表的某一字段或多个字段分为多个区,每一个区都可以可以理解为一个文件夹
优点:在数据庞大的情况下创建分区表便于对数据进行管理,也可以提高查询的效率
使用:在生产上一般以日期作为分区的字段,每一天的数据即时一个分区,存储在一个单独的文件夹内
建表:Hive中创建分区表时可以使用partitioned by(col_name data_type 字段名与类型) 来指定分区表的分区字段,需要注意分区字段一定不能在建表字段中,分区字段是单独存储的
分桶
定义:分桶是相对分区更细粒度的划分:将分桶字段取hash值后再模余分桶个数来划分数据
优点:
- 提高join效率:两表以分桶字段join时在Map端只需要关联hash相同的字段
- 便于取样
建表:Hive中创建分桶表时可以使用**clustered by (col_name, col_name, …) [sorted by (col_name [asc|desc], …)] into num_buckets buckets]**来指定分桶,clustered by 指定分桶标志,into num_buckets buckets 指定分桶个数,sorted by指定桶中的排序规则,注意分桶字段一定是建表字段中的某一个或某几个