Spark HiveContext不会从Hive Table中检索新插入的记录

dav*_*028 7 apache-spark-sql

我正在使用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没有检索新插入的记录?

vij*_*mar 2

hiveContext。refreshTable (tableName: String) - 这将仅刷新表的元数据(而不是实际数据)

官方文档注释:(来源:https: //spark.apache.org

刷新表(表名:字符串):单位

使给定表的所有缓存元数据失效并刷新。出于性能原因,Spark SQL 或其使用的外部数据源库可能会缓存有关表的某些元数据,例如块的位置。当这些在 Spark SQL 之外发生更改时,用户应该调用此函数以使缓存失效

要检索新插入的记录: - 首先取消缓存,然后使用uncacheTable(String tableName)cacheTable(String tableName)再次缓存

  • 问题中的表一开始就没有被缓存。此外,我尝试了缓存 -> 取消缓存 -> 缓存,它仍然没有检索到新插入的记录。您提出的解决方案在您的安装中有效吗? (3认同)