我正在使用pyspark和cassandra,并使用cache()函数缓存数据。 我想知道每次在cassandra中更新数据时缓存是否会自动更新?
答案 0 :(得分:1)
RDD是不可变的,因此一旦创建了RDD,它的内容就不会改变。如果从Cassandra表创建RDD,则RDD是创建RDD时Cassandra中数据的快照。
当你告诉spark缓存一个RDD时,你告诉spark重用该RDD的内容,而不是在下次你在spark动作中使用它时创建一个新的RDD。
如果您希望每次使用时都从Cassandra刷新RDD中的数据,那么您就不想缓存它。或者,当您想要从Cassandra刷新数据时,可以使用spark unpersist()函数。这将导致spark在下次使用时将所有Cassandra数据重新读入新的RDD。
因此,它不会只读取自上次读取以来已更改的行,而是所有这些行。如果表很大,这将大大降低性能,但您将获得最新数据。