Spark Streaming Reuse Physical Plan

问题描述 投票:0回答:1

我们有一个Spark Streaming应用程序,它对传入的数据流执行一些繁重的状态计算。这里的状态保存在某些存储中(HDFS / Hive / Hbase / Cassandra),并且在每个窗口的末尾,使用仅追加写入策略来更新状态的增量变化。]

问题是,对于每个窗口,planning phase

都需要花费大量时间;实际上比计算时间更多。
    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计划每个窗口的阶段,因为实际上在两个窗口之间没有任何变化。

我们有一个Spark Streaming应用程序,它对传入的数据流执行一些繁重的状态计算。这里的状态保存在某些存储中(HDFS / Hive / Hbase / Cassandra),并且...

apache-spark apache-spark-sql spark-streaming
1个回答
1
投票

我不这么认为,这就是为什么您应该改用Spark Structured Streaming的众多原因之一。

© www.soinside.com 2019 - 2024. All rights reserved.