Apache storm 从一个数据库获取数据,并使用trident拓扑处理数据并将其存储到另一个数据库

Apache storm 从一个数据库获取数据,并使用trident拓扑处理数据并将其存储到另一个数据库,apache-storm,trident,Apache Storm,Trident,我想通过喷口从一个数据库获取数据,并使用trident处理数据并将其存储在另一个数据库中。我对storm和trident不太熟悉,不知道如何实现它。我从喷口(实现trident支持的IRichSpout的独立java类)中的数据库获取数据我将它作为一个对象发出,我需要将它传递给trident拓扑进行处理(计算记录数)并将其存储到数据库中 TridentTopology topology = new TridentTopology(); TridentState wordCounts =

我想通过喷口从一个数据库获取数据,并使用trident处理数据并将其存储在另一个数据库中。我对storm和trident不太熟悉,不知道如何实现它。我从喷口(实现trident支持的IRichSpout的独立java类)中的数据库获取数据我将它作为一个对象发出,我需要将它传递给trident拓扑进行处理(计算记录数)并将其存储到数据库中

 TridentTopology topology = new TridentTopology();  
 TridentState wordCounts =
          topology.newStream("spout1",spout)
现在,新的流接受一个喷口作为输入,即语法是

 Stream storm.trident.TridentTopology.newStream(String txId, IRichSpout spout)
但我想将喷口发出的对象作为流的输入,让trident处理并保存到数据库。那么,我如何将喷口类引入trident并将其传递到新流,或者我应该将喷口和trident合并为一个类


有人能帮我吗?…

你可以这样做

    MyFooSpout spout = new MyFooSpout();
    topology.newStream("spout1", spout)....
其中,
MyFooSpout
类应该实现
IRichSpout

TridentTopology
中的
newStream
方法在拓扑中创建从任何输入源读取的数据流

在您的例子中,它可能是
MyFooSpout

.我从数据库中的一个spoot(实现trident支持的IrichSpoot的独立java类)中获取数据,并将其作为对象发出

你能澄清一下你到底指的是什么吗?你的喷口代码看起来怎么样?作为一个非常通用的例子,如果我们写了以下内容(摘自教程页面)

这意味着
喷口
应该发出一个字段,即
句子
。通过调用
each
Split
函数将应用于流中的每个元组,该函数将根据
语句
字段编写的任何代码执行。但是,这可能因您的要求而异。e、 g它可以是
过滤器
作为
MyFilter扩展基本过滤器
函数
作为
MyCustomFuction扩展基本功能
。查看API页面了解更多详细信息

    TridentState wordCounts = topology.newStream("spout1", spout).each(new Fields("sentence"), new Split(), new Fields("word"))