我正在使用 pyspark 和 cassandra,并使用 cache() 函数缓存数据。 我想知道每次在 cassandra 中更新数据时缓存是否自动更新?
最佳答案
RDD 是不可变的,所以一旦创建了 RDD,它的内容就不能改变。如果 RDD 是从 Cassandra 表创建的,则 RDD 是创建 RDD 时 Cassandra 中数据的快照主机。
当您告诉 spark 缓存一个 RDD 时,您是在告诉 spark 重用该 RDD 的内容,而不是在您下次在 spark 操作中使用它时创建一个新的 RDD。
如果您希望每次使用 Cassandra 时都从 Cassandra 中刷新 RDD 中的数据,那么您就不会想要缓存它。或者,当您想要刷新来自 Cassandra 的数据时,您可以使用 spark unpersist() 函数。这会导致spark在下次使用时重新读取所有的Cassandra数据到一个新的RDD中。
因此它不会只读取自您上次读取后更改的行,而是读取所有行。如果表很大,这将大大降低性能,但您可以获得最新的数据。
关于caching - Spark 缓存是否会以任何时间间隔自动更新数据的新值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32134425/