【问题标题】:DStream updateStateByKey update function implementationDStream updateStateByKey 更新函数实现
【发布时间】:2015-07-09 12:33:27
【问题描述】:

在阅读了文档、源代码和示例后,我试图了解 updateStateByKey 的不同方法签名,以及何时使用其中一种会比另一种更合适。

具体看不懂下面的API:

def updateStateByKey[S: ClassTag](
  updateFunc: (Iterator[(K, Seq[V], Option[S])]) => Iterator[(K, S)],
  ...
)

在什么情况下我会创建一个updateFunc 来接受并返回一个Iterator 而不是实现(Seq[V], Option[S]) => Option[S] 函数?

【问题讨论】:

    标签: apache-spark spark-streaming


    【解决方案1】:

    虽然(Seq[V], Option[S]) => Option[S] 将让您“看到”一个密钥的前一个(如果有的话)和当前值,但您无法访问密钥本身。

    使用(Iterator[(K, Seq[V], Option[S])]) => Iterator[(K, S)],您也可以根据键做出决策,例如“我见过这个键”、“我见过所有这些键”、将键与决策逻辑中的值进行比较或只保留一个子一组键(例如“top-k”)。

    【讨论】:

      猜你喜欢
      • 2015-02-16
      • 1970-01-01
      • 2019-02-02
      • 2015-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多