Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Implementazione BOLT WordCounter

Link copiato negli appunti

Per implementare il BOLT che abbiamo chiamato WordNCounter, creiamo una classe nel package BOLTS e la chiamiamo WordCounter. Durante la creazione della classe, dobbiamo avere cura di ereditare la classe BaseRichBOLT. Dunque eseguiamo la stessa procedura descritta prima: parametriziamo la maschera di creazione di una classe come nella figura sottostante:

Figura 13. Creazione della classe WordCounter
Creazione della classe WordCounter

La classe che viene creata ha la struttura seguente:

public class WordCounter extends BaseRichBOLT {			
	public void prepare(Map stormConf, TOPOLOGYContext context,
	OutputCollector collector) {
	}
	public void execute(Tuple input) {
	}
	public void declareOutputFields(OutputFieldsDeclarer declarer) {
	}
}

Per effettuare il conteggio delle occorrenze, ci serviremo di una struttura dati nella quale salvare la word e il relativo contatore. In questo caso torna utile una Map: quindi dichiariamo la struttura dati a livello di classe (e la chiamiamo counters) e la inizializziamo nel metodo prepare().

public void prepare(Map stormConf, TOPOLOGYContext context,
OutputCollector collector) {
	this.counters = new HashMap<string, integer="">();
}

Nel metodo execute() di questo BOLT, implementiamo l'algoritmo che ci permette di contare le occorrenze delle parole, tenendole aggiornate in tempo reale:

public void execute(Tuple input) {
	String str = input.getStringByField("word");
	if(!counters.containsKey(str)){
		counters.put(str, 1);
	}else{
		Integer c = counters.get(str) + 1;
		counters.put(str, c);
	}
	System.out.println(">>>> STATO ELABORAZIONE IN TEMPO REALE");
	for(Map.Entry<string, integer=""> entry : counters.entrySet()){
		System.out.println(entry.getKey()+": "+entry.getValue());
	}
}

Ti consigliamo anche