【已解决】各位吴彦祖!怎么修改动态分区表中所有分区的桶数

Viewed 58

有一张表创建的动态分区表,桶数当时给的15,那一行这么写的:
distributed by hash (num,ymd) buckets 15
现在想修改所有分区的桶数,查看了官网我就这么写了语法,但是 show partitions 显示buckets还是15,那里错误了呢
alter table ods_jz modify partition(*) set ("buckets" = "100")
各位大神帮看看呗

2 Answers

这个表这些分区中是否有数据:

  1. 如果有数据的话,想要修改的分区涉及到的分区数较多,建议,新建一张表,使用新的分桶数,然后把数据insert into到新表,之后再把新表rename一下。
  2. 如果没数据,可以先通过
ALTER TABLE example_db.my_table
DROP PARTITION p1,
DROP PARTITION p2,
DROP PARTITION p3;

删除要修改的分区,然后使用

ADD PARTITION p1 VALUES LESS THAN ("2015-01-01")
DISTRIBUTED BY HASH(k1) BUCKETS 20;

增加分区,使用新的分桶数 完成这个操作。
你上面的语句

alter table ods_jz modify partition(*) set ("buckets" = "100")

是修改分区的properties的属性,分区properties属性中是没有buckets的属性的,目前能够支持修改的属性如下:

  • storage_medium
  • storage_cooldown_time
  • replication_num
  • in_memory

不支持修改buckets,表只能重做了