我们有一个Spark Streaming应用程序,它对传入的数据流执行一些繁重的状态计算。这里的状态保存在某些存储中(HDFS / Hive / Hbase / Cassandra),并且在每个窗口的末尾,使用仅追加写入策略来更新状态的增量变化。]
问题是,对于每个窗口,planning phase
并避免通过Spark计划每个窗口的阶段,因为实际上在两个窗口之间没有任何变化。dStream.foreachRDD(rdd => { val dataset_1 = rdd.toDS() val dataset_2 = dataset_1.join(..) val dataset_3 = dataset_2 .map(..) .filter(..) .join(..) // A few more Joins & Transformations val finalDataset = .. finalDataset .write .option("maxRecordsPerFile", 5000) .format(save_format) .mode("append") .insertInto("table_name") })
是否有一种方法可以从最后一个窗口重用Physical Plan
我们有一个Spark Streaming应用程序,它对传入的数据流执行一些繁重的状态计算。这里的状态保存在某些存储中(HDFS / Hive / Hbase / Cassandra),并且...
我不这么认为,这就是为什么您应该改用Spark Structured Streaming的众多原因之一。