Spark SQL无法查询到ORC类型的Hive表的新插入数据
问题
为什么通过Spark SQL无法查询到存储类型为ORC的Hive表的新插入数据?主要有以下两种场景存在这个问题:
- 对于分区表和非分区表,在Hive客户端中执行插入数据的操作后,会出现Spark SQL无法查询到最新插入的数据的问题。
- 对于分区表,在Spark SQL中执行插入数据的操作后,如果分区信息未改变,会出现Spark SQL无法查询到最新插入的数据的问题。
回答
由于Spark存在一个机制,为了提高性能会缓存ORC的元数据信息。当通过Hive或其他方式更新了ORC表时,缓存的元数据信息未更新,导致Spark SQL查询不到新插入的数据。
对于存储类型为ORC的Hive分区表,在执行插入数据操作后,如果分区信息未改变,则缓存的元数据信息未更新,导致Spark SQL查询不到新插入的数据。
解决措施: