Sql Spark持久化临时视图

Sql Spark持久化临时视图,sql,scala,apache-spark,persist,Sql,Scala,Apache Spark,Persist,我正在尝试持久化临时视图,以便通过sql再次查询它: val df=spark.sqlContext.read.option(“header”,true).csv(“xxx.csv”) df.createOrReplaceTempView(“xxx”) 持久化/缓存: df.cache() // or spark.sqlContext.cacheTable("xxx") // or df.persist(MEMORY_AND_DISK)

我正在尝试持久化临时视图,以便通过sql再次查询它:

val df=spark.sqlContext.read.option(“header”,true).csv(“xxx.csv”)
df.createOrReplaceTempView(“xxx”)
持久化/缓存:

df.cache()                          // or
spark.sqlContext.cacheTable("xxx")  // or
df.persist(MEMORY_AND_DISK)         // or
spark.sql("CACHE TABLE xxx")
然后我移动基础
xxx.csv
,并:

spark.sql("select * from xxx")

在此基础上,我发现只有
缓存表xxx
存储了一个副本。我做错了什么,怎么能持久化,例如:仅磁盘一个可查询的视图/表?

首先将其缓存为
df.cache
,然后注册为
df.createOrReplaceTempView(“dfTEMP”)
,所以现在每次查询
dfTEMP
时,都要查询
val df1=spark.sql(“从dfTEMP中选择*)
您将从内存中读取它(在
df1
上的第一个操作将实际缓存它),暂时不要担心持久性,因为如果
df
不适合内存,我将把其余部分溢出到磁盘