如何禁用2023年12月8日Amazon Redshift机器学习分布键更新?
Amazon Redshift Advisor排序/分布键更新导致ALTER TABLE APPEND失败的解决方案
关于问题普遍性
确实有大量Redshift用户在官方论坛、Stack Overflow等渠道反馈过这个问题——2023年12月推出的Redshift Advisor ML驱动的键推荐功能,会自动为无显式分布/排序键的表生成推荐配置,而ALTER TABLE APPEND要求源表和目标表的分布策略、排序键完全匹配,这就导致原有无键的源表无法向被自动配置推荐键的目标表执行append操作。
可行解决办法
1. 直接禁用Advisor的键推荐功能
可以通过集群参数组关闭该推荐模块,操作步骤:
- 使用AWS CLI执行修改命令:
aws redshift modify-cluster-parameter-group \ --parameter-group-name <你的参数组名称> \ --parameters "ParameterName=enable_advisor_sort_dist_recommendations,ParameterValue=false" \ --region <你的集群区域> - 修改后需要重启Redshift集群才能生效,重启前请确保业务低峰期操作。
2. 临时规避(无需全表显式改键)
针对需要执行append的表对,临时统一双方的分布/排序键配置,完成操作后再按需调整:
- 方案一:将目标表临时恢复为默认无键状态(和源表匹配)
-- 调整目标表为默认分布/排序配置 ALTER TABLE target_table ALTER DISTSTYLE ALL; ALTER TABLE target_table ALTER SORTKEY NONE; -- 执行append操作 ALTER TABLE source_table APPEND TO target_table; -- 可选:恢复Advisor推荐的键配置(如果需要) ALTER TABLE target_table ALTER DISTKEY (your_distribution_column); ALTER TABLE target_table ALTER SORTKEY (your_sort_column); - 方案二:临时修改源表的键配置和目标表一致,完成append后改回。
3. 批量处理脚本(减少重复劳动)
如果受影响的表数量较多,可以用SQL脚本批量生成调整语句:
-- 查询所有受影响的表(无显式键或使用AUTO分布的表) SELECT schemaname, tablename FROM svv_table_info WHERE diststyle = 'AUTO' OR sortkey1 IS NULL; -- 生成批量调整为默认配置的ALTER语句 SELECT 'ALTER TABLE ' || schemaname || '.' || tablename || ' ALTER DISTSTYLE ALL; ALTER TABLE ' || schemaname || '.' || tablename || ' ALTER SORTKEY NONE;' FROM svv_table_info WHERE diststyle = 'AUTO' OR sortkey1 IS NULL;
内容的提问来源于stack exchange,提问作者panthersinsights
相关产品推荐
相关产品推荐

