I'm a Storm newbie trying to learn it. Could someone please help me?
Consider the following snippet:
TridentTopology builder = new TridentTopology();
// Random data generated with a random 'messageId'
Stream inputStream = builder.newStream("data-supply", new
RandomDataGenerator() /* this extends BaseRichSpout */);
// Load 'Datatype' referenced by datatypeId from external source
Stream datatypeStream = inputStream.each(new Fields("datatypeId"), new
DatatypeLoader(), new Fields("datatype")).
project(new Fields("messageId", "datatype"));
// Load 'Provider' referenced by providerId from external source
Stream providerStream = inputStream.each(new Fields("providerId"), new
ProviderLoader(), new Fields("provider")).
project(new Fields("messageId", "provider"));
// Join both streams on original 'messageId'
builder.join(providerStream, new Fields("messageId"),
datatypeStream, new Fields("messageId"),
new Fields("datatype", "provider")).
each(new Fields("datatype", "provider"), new Print()); // Print the
result
I expected to get a Tuple with both 'Datatype' and 'Provider' previoulsy
loaded, but what I get is a Tuple with either one, depending on which is
the first argument of the 'join' method (in this case 'providerStream').
Am I doing something wrong or maybe with a misconcept of how storm works?
Thanks,
Thiago Souza