为了提升查询性能,impala 使用了元数据缓存进行加速,但同时也带来了元数据不一致的问题,常见有两个问题.
从其引擎新建的库表 Impala 中看不到
在其他引擎执行的DDL,即插入/删除库表、修改表结构等之后,需要在 impala 中执行 invalidate metadata 销毁对应库表的缓存,待下次查询相关表时会重新加载元数据。
invalidate metadata table_name;
Impala和其他引擎的查询结果不同
在其他引擎执行的写入数据、修改分区或者通过etl等直接修改文件的方式导入数据,需要在 impala 中执行 refresh 增量更新对应的元数据,该操作的性能会显著优于 invalidate metadata。
refresh table_name;