DataFrame.cache()和hiveContext.cacheTable之间有什么区别



以下代码段之间有什么区别吗:

val df = hiveContext.createDataFrame(rows, schema)
df.registerTempTable("myTable")
df.cache()

val df = hiveContext.createDataFrame(rows, schema)
df.registerTempTable("myTable")
hiveContext.cacheTable("myTable")

没有区别。HiveContext类扩展了SQLContext类(源代码),因此它们共享相同的cacheManager。事实上,HiveContext根本没有cacheTable函数(它调用SQLContext的cacheTable函数)

编辑:调用df.cache()转换为调用persist,转换为sqlContext.cacheManager.cacheQuery(this),如DataFrame 的源代码所示

sqlContext.cacheTable也翻译为SQLContext 的sqlContext.cacheManager.cacheQuery源代码

最新更新