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

时间:2015-12-18 10:26:39

标签: apache-spark pyspark apache-spark-sql spark-streaming

以下代码段之间是否有任何区别:

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

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

1 个答案:

答案 0 :(得分:2)

没有区别。 HiveContext类extends SQLContext class (source code),因此它们共享相同的cacheManager。事实上,HiveContext根本没有cacheTable函数(它调用SQLContext' s cacheTable函数)

修改:调用df.cache()转换为persist,其转换为sqlContext.cacheManager.cacheQuery(this),如source code for DataFrame

中所示

虽然sqlContext.cacheTable也会翻译为sqlContext.cacheManager.cacheQuery source code for SQLContext