【发布时间】:2016-10-13 07:33:45
【问题描述】:
我正在尝试将 KafkaSpout 发出的记录与 Oracle 表中的记录连接起来(不是流式连接)
实现这一点的最佳方法是什么?
我可以使用缓存从 db 表中检索记录,然后我可以将 spout 发出的每个元组与缓存的数据进行连接。
希望获得有关此方面的建议。
【问题讨论】:
标签: streaming apache-kafka apache-storm
我正在尝试将 KafkaSpout 发出的记录与 Oracle 表中的记录连接起来(不是流式连接)
实现这一点的最佳方法是什么?
我可以使用缓存从 db 表中检索记录,然后我可以将 spout 发出的每个元组与缓存的数据进行连接。
希望获得有关此方面的建议。
【问题讨论】:
标签: streaming apache-kafka apache-storm
最简单的方法是在open()或prepare()中打开一个到数据库的JDBC连接(取决于你是想在spout还是bolt中这样做)并查询数据库中要处理的每个元组以接收相应的连接元组。
当然,您还可以在 spout/bolt 代码中使用缓存(可能是一个简单的HashMap)以避免一遍又一遍地查询相同的数据。为此,我会延迟填充缓存并限制条目数以避免内存不足错误。您可能希望实施 LRU 策略以在达到其限制的情况下从缓存中消除元组。
【讨论】: