【发布时间】:2018-07-24 21:37:24
【问题描述】:
使用 Spark Streaming,我可以创建一个 DStream[(K, V)],我可以在其上使用 mapWithState 在流处理期间保持某些状态。 map 函数是这样设置的:
val mapFun =
(key: K, maybeValue: Option[V], state: State[S]) => {
// Do stuff
}
然后我可以使用:
val mappedStreamWithState = stream.mapWithState(StateSpec.function(mapFun))
我现在的问题是:state 的范围是什么?是key还是partition?
假设流来自具有 3 个分区但可以有 300 个键的 Kafka 主题。据我了解,流中的每个 RDD 都有 3 个分区,每个分区大约有 100 个键。那么是 3 种状态(每个分区一个)还是 300 个状态(每个键一个)?
【问题讨论】:
标签: scala apache-spark spark-streaming