我创建了一个有很多分区的表:
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吗?!
答案 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
中的字段。
我做了一个小测试,其中有一个分区在工作,但是随后以不同的顺序重新创建了表,并且该表返回了零行。 (它还在预期的层次结构中创建了新目录-很奇怪!)