Spark坚持临时视图

时间:2017-05-18 11:18:38

标签: 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)         // or
spark.sql("CACHE TABLE xxx")

然后我移动基础xxx.csv和:

spark.sql("select * from xxx")

在此基础上,我发现只有CACHE TABLE xxx存储副本。我做错了什么,怎么能坚持下去,例如。 DISK_ONLY可查询的视图/表格?

1 个答案:

答案 0 :(得分:2)

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