Spark-Streaming 记录比较

Posted

技术标签:

【中文标题】Spark-Streaming 记录比较【英文标题】:Spark-Streaming Comparison of records 【发布时间】:2018-05-09 11:36:20 【问题描述】:

如何将接收到的记录与 spark 结构化流中相同键的先前记录进行比较。这可以使用 groupByKey 和 mapGroupWithState 来完成吗?

groupByKey(user)
mapGroupsWithState(GroupStateTimeout.NoTimeout)(updateAcrossEvents)

//来自 Spark Definitive Guide 的示例代码

当我们执行上述操作时,又出现了一个问题 我认为不会在收到记录时维护记录序列,它将在工作节点之间进行分区和存储,当我们应用 groupByKey 时会发生随机播放,并且具有相同键的所有记录都将位于同一个工作节点中,但不会保持顺序。

【问题讨论】:

【参考方案1】:

您可以为此使用 mapGroupsWithState。您必须将之前的记录保存在组状态中,并将其与传入记录进行比较。

您使用什么作为来源?如果源是 Kafka,您将必须按您正在使用的键对 Kafka 主题进行分区。

【讨论】:

以上是关于Spark-Streaming 记录比较的主要内容,如果未能解决你的问题,请参考以下文章