我正在使用Spark 1.4.HiveContext用于连接Hive.我做了以下
val hx = new HiveContext(sc)
import hx.implicits._
hx.sql("select * from tab").show
Run Code Online (Sandbox Code Playgroud)
//很好,结果显示为预期
然后,我从直线控制台插入一些记录到选项卡
hx.refreshTable("tab")
hx.sql("select * from tab").show
Run Code Online (Sandbox Code Playgroud)
//仍然是旧记录,没有新插入的记录
我的问题是:为什么HiveContext没有检索新插入的记录?
hiveContext。refreshTable (tableName: String) - 这将仅刷新表的元数据(而不是实际数据)
官方文档注释:(来源:https: //spark.apache.org)
刷新表(表名:字符串):单位
使给定表的所有缓存元数据失效并刷新。出于性能原因,Spark SQL 或其使用的外部数据源库可能会缓存有关表的某些元数据,例如块的位置。当这些在 Spark SQL 之外发生更改时,用户应该调用此函数以使缓存失效
要检索新插入的记录: - 首先取消缓存,然后使用uncacheTable(String tableName)和cacheTable(String tableName)再次缓存