我正在尝试保留临时视图,以便通过 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")
我发现只有
CACHE TABLE xxx
存储了副本。我做错了什么,如何坚持,例如。 DISK_ONLY
可查询的视图/表?
首先将其缓存为
df.cache
,然后注册为df.createOrReplaceTempView("dfTEMP")
,因此现在每次您查询dfTEMP
(例如val df1 = spark.sql("select * from dfTEMP)
)时,您都会从内存中读取它(对df1
的第一个操作实际上会缓存它) ,现在不用担心持久性,就好像 df
不适合内存一样,我会将其余的溢出到磁盘。