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 记录比较的主要内容,如果未能解决你的问题,请参考以下文章

流式计算助力实时数据处理spark-streaming入门实战

java spark-streaming接收TCP/Kafka数据

spark-streaming任务提交遇到的坑

spark-streaming对接kafka的两种方式

如何在 Spark-Streaming 的 DStream 中使用“for”循环进行转换和输出?

spark-streaming问题集锦