Spark 保留临时视图

问题描述 投票:0回答:1

我正在尝试保留临时视图,以便通过 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
可查询的视图/表?

sql scala apache-spark apache-spark-sql persist
1个回答
5
投票

首先将其缓存为

df.cache
,然后注册为
df.createOrReplaceTempView("dfTEMP")
,因此现在每次您查询
dfTEMP
(例如
val df1 = spark.sql("select * from dfTEMP)
)时,您都会从内存中读取它(对
df1
的第一个操作实际上会缓存它) ,现在不用担心持久性,就好像
df
不适合内存一样,我会将其余的溢出到磁盘。

© www.soinside.com 2019 - 2024. All rights reserved.