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