分区不在雅典娜的Metastore错误中

时间:2020-07-23 10:35:32

标签: avro amazon-athena partition

我正在尝试按列对数据进行分区。但是,当我运行查询-Dspring.active.profiles=testing时,它返回错误

不在元存储中的分区:city:countrycode = AFG city:countrycode = AGO city:countrycode = AIA city:countrycode = ALB city:countrycode = AND city:countrycode = ANT city:countrycode = ARE

我通过以下查询从Avro创建了表:

MSCK REPAIR TABLE mytable

我的分区看起来像s3:// mybucket / city / countrycode = ABC

2 个答案:

答案 0 :(得分:1)

这是一个老问题,Athena 似乎对此添加了警告信息,但如果其他人错过了前几次,他们会尝试类似的方法......

这是 Athena 在您创建表时给出的消息:

<块引用>

查询成功。如果您的表有分区,则需要加载这些分区才能查询数据。您可以加载所有分区或单独加载它们。如果使用 load all partitions (MSCK REPAIR TABLE) 命令,分区必须采用 Hive 可以理解的格式。了解详情。

您用于分区的代码似乎不适用于 Hive(我正在做类似的事情,通过分组代码进行分区)。因此,您需要为每个分区运行一个 MSCK REPAIR TABLE,而不是 ALTER TABLE(请参阅:https://docs.aws.amazon.com/athena/latest/ug/partitions.html

ALTER TABLE city ADD PARTITION (CountryCode='ABC') location 's3://mybucket/city/ABC/' ;

...并且每次添加新的县代码桶时都必须运行它。

答案 1 :(得分:0)

您绝对需要在您所在的位置加一个斜杠: https://docs.aws.amazon.com/athena/latest/ug/create-table.html

也许也尝试对分区列PARTITIONED by (countrycode string)使用小写字母。

您是尝试在Glue Catalog中还是通过Crawler手动添加分区?这个工作了吗?