【发布时间】:2018-10-19 18:54:31
【问题描述】:
我有一个要求,我需要从 kafka 主题读取消息,对数据集进行查找,然后根据查找数据的结果发送消息。下面的示例可以使这一点更清楚。
Kafka 主题收到一条 xml 消息,其中 messageID 字段的值为 2345
我们进行查找并确认以前没有发送过具有此 ID 的消息。如果返回 false,我们发送消息,然后将此 messageID 添加到查找数据中。 如果这个 messageID 已经在查找数据中,我们不会继续发送它。
目前这是通过使用 hbase 表来保存查找数据来实现的。但是,我们每天可以收到数百万条消息,我担心组件的性能会随着时间的推移而下降。
是否有其他更优化的解决方案可以使用 hbase 来查找数据,例如将此数据存储在 RDD 中的内存中?我尝试了这个,但遇到了一些困难,因为 spark 上下文显然不可序列化,所以我无法添加到现有的 lookuo 数据集
非常感谢任何建议!
非常感谢
丹
【问题讨论】:
-
Spark 具有查找 api(对于实时应用来说,最佳情况下的延迟仍然很长),但在您的情况下 - 如果在存储(缓存)中 not 找到密钥,则您希望将此密钥添加到缓存中吗?您确实意识到 RDD 是不可变的,对吧?对于这种情况,Spark 没有解决方案。
标签: java apache-spark apache-spark-sql spark-streaming