// aggregators. In the later, all input with a given location are routed to the same instance of aggregation.
// This means that, more summarization can be done in the later, which would make subsequent processing more
// efficient. However, note that if your input is skewed, the workload can become skewed, too
// Here is an example how to deal with such skews
topology
.newStream("aggregation", spout)
.partitionBy(new Fields("location"))
.partitionAggregate(new Fields("location"), new StringCounter(), new Fields("count_map"))
.each(new Fields("count_map"), new HasSpain())
.each(new Fields("count_map"), new Print("AFTER-HAS-SPAIN"))