Hive外部表指向S3上的文件,ddl包含按eod子句进行分区。在一个文件夹下,有5个子文件夹,每个子文件夹下都有一个文件,用于不同的partition_date。即
eod=20180602/fileA
eod=20180603/fileA
eod=20180604/fileA
eod=20180605/fileA
eod=20180606/fileA
Msck修复表在HiveServer2上运行
从HiveServer2(端口10000)的tbl中选择不同的part_dt会返回所有5个日期
但是,从SparkThriftServer的tbl中选择不同的part_dt(即SparkSQL,端口10015)仅返回前两个日期。
这怎么可能?
即使在SparkThriftServer上运行msck修复,差异仍然存在。
文件模式在所有日期都是相同的。 (即每个文件具有相同数量/类型的列)
答案 0 :(得分:1)
已解决,这8个受影响的表先前已缓存在sparksql中(即cache table <table>
)。我运行uncache table <table>
后,所有分区又重新排成一行!