Sql Spark持久化临时视图
我正在尝试持久化临时视图,以便通过sql再次查询它: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)
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
不适合内存,我将把其余部分溢出到磁盘