aws-分区存在时如何创建请求

时间:2018-06-28 23:53:19

标签: amazon-web-services amazon-s3 amazon-athena

我创建了一个有很多分区的表:

PARTITIONED BY (`year` string, `day` string, `month` string, `version_` string, `af_` string, `type_` string, `msm` string)

之后,我运行:

MSCK REPAIR TABLE mytable;

启动mytable预览时,我有0行。我尝试:

select * from mytable

也没有结果。

一种解决方案是使用alter table添加带有值的分区,但是我应该在每个请求之前创建alter table吗?!

1 个答案:

答案 0 :(得分:1)

原因是您的PARTITIONED BY语句具有与目录层次结构不同的字段不同的顺序

PARTITIONED BY (`year` string, `day` string, `month` string, `version_` string, `af_` string, `type_` string, `msm` string)

af_=4/type_=anchor/msm=1026355/year=2017/month=05/day=14/version_=1 

您可以通过以下方式解决此问题:以{strong>相同的顺序作为目录层次结构列出PARTITIONED BY中的字段。

我做了一个小测试,其中有一个分区在工作,但是随后以不同的顺序重新创建了表,并且该表返回了零行。 (它还在预期的层次结构中创建了新目录-很奇怪!)