从hive中读取数据然后进行cachevar data = spark.sql("select * from a").cachedata.show  第一次后面的计算中对a表进行了修改这个时候的
data.show 第二次
和之前的是一样的吗?
因为目前做的感觉这个data虽然cache了,但是数据源变了,data又重新计算,第一次和第二次的结果不一样,cache并没有成功的样子。这样可以让data保持不变,尽管数据源变了。

解决方案 »

  1.   

    一样。数据已经读取出来并cache到spark的内存里了,相当于在spark里打了个快照(或者叫副本)
      

  2.   

    其实我和楼上也是同样的想法,但是在测试中,发现如果原表变了后,得到的东西是不一样了,感觉cache失效了
      

  3.   

    还有一个问题,也在这里顺便问一下,sparkSQL的cache和rdd的cache是不是不一样,因为现在看起来,好像sparksql的cache是先内存再磁盘,而rdd是只有内存
      

  4.   

    一样的啊,不管是否有缓存,都不会改变,RDD或者说DataFrme都是只读的,只能从一个状态转换为另外一个状态,他本身是不会改变的