给定messageId的流数据中的缓冲消息

时间:2018-02-09 20:39:16

标签: apache-kafka streaming spark-streaming buffering apache-samza

用例:我有消息有messageId,多个消息可以有相同的消息ID,这些消息存在于由messageId分区的流管道(如kafka)中,所以我确保所有具有相同messageId的消息都将在同一个消息中分区。

所以我需要编写一个应该缓冲消息一段时间(比如说1分钟)的作业,然后将具有相同messageId的所有消息组合成单个大消息。

我认为可以使用spark Datasets和spark sql(或其他东西?)来完成。但我找不到任何关于如何为给定的消息ID存储消息一段时间的示例/文档,然后对这些消息进行聚合。

1 个答案:

答案 0 :(得分:0)

我认为您正在寻找的是android.os.FileUriExposedException: file:///storage/emulated/0/test.txt exposed beyond app through Intent.getData()。  Spark有Spark Streaming可以链接到Spark Streaming Context。

这里是一个非常基本的示例,它将在1分钟的间隔内为给定主题集中的所有消息创建RDD,然后通过消息ID字段对它们进行分组(您的值序列化器必须公开这样的{当然是{1}}方法。

getMessageId

还有其他几种方法可以在流API中对消息进行分组。查看文档以获取更多示例。