¿Cómo dividiría una corriente en Apache Storm?


No entiendo cómo dividiría una corriente en Apache Storm. Por ejemplo, tengo perno A que después de algún cálculo tiene somvalue1, somvalue2, y somvalue3. Quiere enviar algo de valor1 al perno B, algo de valor2 al perno C,y algo de valor1, algo de valor2 al perno D. ¿Cómo haría esto en Storm? ¿Qué agrupación usaría y cómo se vería mi topología? Gracias de antemano por su ayuda.

Author: james, 2013-11-06

2 answers

Puede usar diferentes flujos si su caso lo necesita, no es realmente dividir, pero tendrá mucha flexibilidad, podría usarlo para enrutamiento basado en contenido desde un bolt, por ejemplo:

Usted declara la corriente en el perno:

@Override
public void declareOutputFields(final OutputFieldsDeclarer outputFieldsDeclarer) {
    outputFieldsDeclarer.declareStream("stream1", new Fields("field1"));
    outputFieldsDeclarer.declareStream("stream2", new Fields("field1"));
}

Usted emite desde el perno en la corriente elegida:

collector.emit("stream1", new Values("field1Value"));

Se escucha el flujo correcto a través de la topología

builder.setBolt("myBolt1", new MyBolt1()).shuffleGrouping("boltWithStreams", "stream1");
builder.setBolt("myBolt2", new MyBolt2()).shuffleGrouping("boltWithStreams", "stream2");
 52
Author: zenbeni,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-11-22 18:05:16

Tiene dos opciones aquí: Grupos de flujo y "Agrupación directa". Dependiendo de sus necesidades, uno de ellos va a servirle.

Eche un vistazo a WordCountTopology sample project para ver si eso es lo que está buscando. De lo contrario, "Agrupación directa" va a ser una mejor alternativa.

Pero de nuevo, elegir una estrategia de agrupación depende de sus requisitos.

 2
Author: Chiron,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-07 16:02:18