我正在尝试持久化一个临时视图,目的是通过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一个可查询的视图/表?
发布于 2017-05-18 22:39:07
首先缓存它,作为df.cache,然后注册为df.createOrReplaceTempView("dfTEMP"),所以现在每次你要查询dfTEMP,比如val df1 = spark.sql("select * from dfTEMP),你都会从内存中读取它( df1上的第一个操作实际上会缓存它),现在不要担心持久性,就像df不适合内存一样,我会把剩下的部分溢出到磁盘上。
https://stackoverflow.com/questions/44046317
复制相似问题