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

What is the difference between DataFrame.cache() and 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 class extends SQLContext class (source code),因此它们共享相同的 cacheManager。事实上,HiveContext 根本没有 cacheTable 函数(它调用 SQLContext 的 cacheTable 函数)

Edit:调用 df.cache() 转换为调用 persist,转换为 sqlContext.cacheManager.cacheQuery(this),如 source code for DataFrame 中所示

sqlContext.cacheTable也翻译为sqlContext.cacheManager.cacheQuerysource code for SQLContext