force缓存已经缓存

py49o6xq  于 2021-05-27  发布在  Spark
关注(0)|答案(0)|浏览(422)

我在数据集中缓存了一个配置单元表(java中的数据集,scala中的Dataframe)。
我要定期刷新此数据集。但当我再次触发缓存时,它会说:

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.");
        }

    }

}

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题