默認不支持分桶功能,需要開啟。
```bash
set hive.enforce.bucketing;
```
```
+-------------------------------+--+
| set |
+-------------------------------+--+
| hive.enforce.bucketing=false |
+-------------------------------+--+
```
執行開啟:
```bash
set hive.enforce.bucketing = true;
```
```
+------------------------------+--+
| set |
+------------------------------+--+
| hive.enforce.bucketing=true |
+------------------------------+--+
```
最終轉為MapReduce,設置4桶:
```bash
set mapreduce.job.reduces = 4;
```
```
+--------------------------+--+
| set |
+--------------------------+--+
| mapreduce.job.reduces=4 |
+--------------------------+--+
```
創建分桶表
```mysql
create table t1(id int, name string, age int, dept string)
clustered by(id)
into 4 buckets
row format delimited
fields terminated by ',';
```
導入數據:insert + select
```mysql
insert overwrite table t1 select * from t2 cluster by(id);
```