我们需要使用JDBC查找来丰富传入的Kafka DStream数据。对于每个Kafka消息,我们需要通过JDBC在一些查找表中查找信息。
只要查找表很小或查找数据是静态的(或随着时间的推移缓慢变化),这在Spark Streaming中就相当简单了。在这种情况下,脚本可以将整个查找表加载到Spark中。在一些到期时间之后,只需要刷新查找数据再进行一次完全重新加载。
问题是我们的查找表很大(例如我们不能每10秒完全重新加载)并且随着时间的推移而变化(例如,每小时刷新一次查找数据会导致过时的查找数据),上述方法不再的工作原理。
我在考虑以下高级逻辑(受到一些关于Storm流的线程的启发):
如何在Spark Streaming上完成? Spark State DStreams会是正确的方式吗?还是其他设计方法?
由于
答案 0 :(得分:0)
您是否考虑过从源SQL服务器到更简单的密钥/值存储区进行增量更新?
e.g。对于每个INSERT或UPDATE到SQL,是否可以对Redis实例进行更新,然后可以查询?
根据来自数据库的事务日志,可以执行此操作的各种工具,例如BottledWater用于Postgres到Kafka的复制