我创建了一个包含许多分区的表:
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 表吗?!
原因是您的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
您可以通过按照与目录层次结构相同的顺序列出PARTITIONED BY
中的字段来修复它。
我做了一个小测试,我有一个分区工作,但随后以不同的顺序重新创建了表,它返回了零行。(它还在预期的层次结构中创建了新目录 - 奇怪!