假设我做这样的事情:
def readDataset: Dataset[Row] = ???
val ds1 = readDataset.cache();
val ds2 = ds1.withColumn("new",lit(1)).cache();
ds2
和ds1
会共享除添加到ds2
的“ new” 之外的列中的所有数据吗?如果我同时缓存两个数据集,它将把整个数据集ds
和ds2
存储在内存中,还是将共享数据仅存储一次?
如果数据是共享的,那么此共享被破坏了(因此相同的数据存储在两个内存位置)?
我知道数据集和rdds是不可变的,但是无论是否共享数据,我都找不到清晰的答案。