当我在 Amazon Athena 中运行 ALTER TABLE ADD PARTITION 时,遇到此错误: “失败: SemanticException 表未分区,但存在分区规范”。
解决方案
如果您没有在 CREATE TABLE 语句中定义任何分区,则会发生此错误。要解决此错误,请执行下列操作之一:
- 重新创建表并使用 PARTIONED BY 定义分区键。
- 编辑表架构。
重新创建表
再次创建表,并使用 PARTITIONED BY 定义分区键。有关示例,请参阅创建表。定义分区后,可以使用 ALTER TABLE ADD PARTITION 来添加更多分区。
例如,如果使用以下数据定义语言 (DDL) 来创建包含年、月和日三个分区的表:
CREATE EXTERNAL TABLE test (
requestBeginTime string,
adId string,
...)
PARTITIONED BY (
year string,
month string,
day string
)
ROW FORMAT serde 'org.apache.hive.hcatalog.data.JsonSerDe'
LOCATION 's3://.../' ;
然后,添加与以下分区类似的分区:
ALTER TABLE impressions ADD
PARTITION (year = '2016', month = '05', day='04') LOCATION 's3://mystorage/path/to/data\_14\_May\_2016/';
编辑表架构
要在 AWS Glue 中编辑表架构,请完成下列步骤:
- 打开 AWS Glue 控制台。
- 在列表中选择表名,然后选择编辑架构。
- 选择添加列。
- 输入列名、类型和编号。然后,选中分区键框。
- 选择添加。
有关详细信息,请参阅查看和编辑表详细信息。