如何解决 Athena 中的错误“失败: SemanticException 表未分区,但存在分区规范”?

1 分钟阅读
0

当我在 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 中编辑表架构,请完成下列步骤:

  1. 打开 AWS Glue 控制台
  2. 在列表中选择表名,然后选择编辑架构
  3. 选择添加列
  4. 输入列名、类型和编号。然后,选中分区键框。
  5. 选择添加

有关详细信息,请参阅查看和编辑表详细信息

AWS 官方
AWS 官方已更新 1 年前