如何在Amazon Athena中基于已有表创建继承分区的新表
错误原因
Athena的CTAS(CREATE TABLE AS SELECT)语法对子句顺序有严格要求,PARTITIONED BY 属于新表的属性配置,需要放在 AS 关键字之前,你之前把它放在了SELECT查询语句的末尾,不符合语法规则所以触发报错。
另外补充注意点:CTAS建分区表时,SELECT 语句返回的字段中,分区字段必须放在所有普通字段的最后,你当前的查询顺序已经满足这个要求,不需要调整字段顺序。
修正后的代码
CREATE TABLE IF NOT EXISTS newTable PARTITIONED BY (partition_0 string, partition_1 string, partition_2 string) AS SELECT x, partition_0, partition_1, partition_2 FROM existingTable T
如果后续你手动往新表对应的S3路径下新增了分区目录,执行MSCK REPAIR TABLE newTable即可加载新增的分区元数据。
内容的提问来源于stack exchange,提问作者Runeaway3
相关产品推荐
相关产品推荐

