如何使用三叉戟拓扑将一个元组写入redis以及cassandra

时间:2015-07-17 11:57:52

标签: redis cassandra apache-storm trident

我正在编写一个Trident拓扑来处理来自Kafka的数据流并输入Redis和Cassandra。我能够将数据写入Cassandra。现在我想将相同的数据写入Redis。

有没有办法复制元组并将其分支到2个流程,其中一个进入Redis而另一个进入Cassandra?

1 个答案:

答案 0 :(得分:3)

对于Trident,你可以像这样使用smth:

TridentTopology topology = new TridentTopology();
Stream stream = topology.newStream("MySpout", spout);
stream.partitionPersist(...); // to Redis
stream.partitionPersist(...); // to Cassandra

因此,它会将您的数据流中的数据并行保存到两个数据库中。

但是我也会想,如果在单个拓扑中进行这样的并行操作,或者如果从同一主题中读取两个不同的拓扑结构,则更好。想象一下Cassandra集群会崩溃。如果有两种拓扑结构,您仍然可以继续将数据保存到Redis。但是如果只有一个拓扑结构,那么每个元组都无法转到Cassandra,很可能会导致FailedException触发重放,并且元组的每次后续重放都会涉及不必要地再次将元组保存到Redis。