【发布时间】:2016-04-10 16:49:22
【问题描述】:
上下文:处理来自 Kafka 的数据并将结果发送回 Kafka。
问题:每个事件可能需要几秒钟的时间来处理(正在进行改进)。在此期间,事件(和 RDD)确实会累积。不需要处理中间事件(按键),只需处理最后的事件。因此,当一个进程完成时,最好让 Spark Streaming 跳过所有不是当前最后一个事件(按键)。
我不确定该解决方案是否可以仅使用 Spark Streaming API 完成。据我了解Spark Streaming,DStream RDD会一一积累处理,以后有没有其他的就不考虑了。
可能的解决方案:
仅使用 Spark Streaming API,但我不确定如何使用。
updateStateByKey似乎是一个解决方案。但是我不确定当 DStream RDD 累积时它是否会正常工作,并且您只需按键处理 lasts 事件。-
有两个 Spark Streaming 管道。一种通过键获取最后更新的事件,将其存储在地图或数据库中。第二个管道仅在事件是另一个管道所指示的最后一个事件时才处理事件。子问题:
两个管道是否可以共享相同的
sparkStreamingContext并以不同的速度(低处理与高处理)处理相同的 DStream?是否可以在不使用外部数据库的情况下轻松地在管道之间共享值(例如地图)?我认为累加器/广播可以工作,但我不确定在两条管道之间。
【问题讨论】:
标签: apache-spark apache-kafka spark-streaming