如何解决强制缓存已缓存的数据集火花
我已经在数据集中缓存了一个配置单元表(Java中为Dataset
我想保持定期刷新此数据集。但是当我再次触发缓存时,它说:
Asked to cache already cached data.
因此不会缓存它。我想将这些数据强行缓存到另一个数据集中。
此外,由于无法在进行第二次缓存时无法使缓存的数据不可用,因此我不能取消对先前缓存的数据的持久化。当两个缓存都存在时,我对双倍的内存消耗感到满意。第二个完成后,我将不再持久第一个。
在下面添加一些代码以供参考:
private static Dataset<Row> primaryDataset;
private static Dataset<Row> secondaryDataset;
private static boolean primaryInd = false;
...
...
public void cacheDataset(SparkSession spark){
String query = "select * from db.table";
if(primaryInd){
secondaryDataset = spark.sql(query);
secondaryDataset.cache();
long count = secondaryDataset.count();
logger.info(">>> Dataset is Cached. Count = " + count);
primaryInd = false;
primaryDataset.unpersist();
}else {
primaryDataset = spark.sql(query);
primaryDataset.cache();
long count = primaryDataset.count();
logger.info(">>> Dataset is Cached. Count = " + count);
primaryInd = true;
try {
secondaryDataset.unpersist();
}catch (NullPointerException nullPointerException){
logger.info(">>> Null Pointer exception while unpersisting. Could be the first caching.");
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。