Apache spark 如何在spark structured streaming 2.4.4中缓存/持久化数据集

Apache spark 如何在spark structured streaming 2.4.4中缓存/持久化数据集,apache-spark,spark-streaming,spark-structured-streaming,apache-spark-dataset,Apache Spark,Spark Streaming,Spark Structured Streaming,Apache Spark Dataset,我想在一个计算的数据集上写三个单独的输出,为此我必须缓存/持久化我的第一个数据集,否则它将计算第一个数据集三次,这会增加我的计算时间 e、 g 现在我想过滤我的第三个数据集,并以不同的逻辑为三种不同的条件输出过滤后的数据集 ThirdDataset.filter(**Condition1**).writeStream().foreach(**SOMECALCULATIONS1**).outputMode(OutputMode.Append()).trigger(Trigger.Processin

我想在一个计算的数据集上写三个单独的输出,为此我必须缓存/持久化我的第一个数据集,否则它将计算第一个数据集三次,这会增加我的计算时间

e、 g

现在我想过滤我的第三个数据集,并以不同的逻辑为三种不同的条件输出过滤后的数据集

ThirdDataset.filter(**Condition1**).writeStream().foreach(**SOMECALCULATIONS1**).outputMode(OutputMode.Append()).trigger(Trigger.ProcessingTime(600000)).start();

ThirdDataset.filter(**Condition2**).writeStream().foreach(**SOMECALCULATIONS2**).outputMode(OutputMode.Append()).trigger(Trigger.ProcessingTime(600000)).start();

ThirdDataset.filter(**Condition3**).writeStream().foreach(**SOMECALCULATIONS3**).outputMode(OutputMode.Append()).trigger(Trigger.ProcessingTime(600000)).start();
现在,对于正在计算的每个writestream ThirdDataset,如果缓存ThirdDataset,它将不会计算三次

但是当我执行
ThirdDataset.cache()
时,它会提示我以下错误:

线程“main”org.apache.spark.sql.AnalysisException中的异常: 使用流媒体源的查询必须使用 writeStream.start()


谁能给我推荐一下。

缓存对于流式数据集没有意义

您可能需要改变方法

差不多

ThirdDataset.writeStream().foreach(**SOMECALCULATIONS BASED ON CONDITION**).outputMode(OutputMode.Append()).trigger(Trigger.ProcessingTime(600000)).start();

ThirdDataset.writeStream().foreach(**SOMECALCULATIONS BASED ON CONDITION**).outputMode(OutputMode.Append()).trigger(Trigger.ProcessingTime(600000)).start();