package com.packtpub.storm.trident.spout; import storm.trident.operation.TridentCollector; import storm.trident.spout.ITridentSpout.Emitter; import storm.trident.topology.TransactionAttempt; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import java.util.concurrent.atomic.AtomicInteger; public class ClickThruEmitter implements Emitter<Long>, Serializable { private static final long serialVersionUID = 1L; public static AtomicInteger successfulTransactions = new AtomicInteger(0); public static AtomicInteger uids = new AtomicInteger(0); @Override public void emitBatch(TransactionAttempt tx, Long coordinatorMeta, TridentCollector collector) { File file = new File("click_thru_data.txt"); try { BufferedReader br = new BufferedReader(new FileReader(file)); String line = null; while ((line = br.readLine()) != null) { String[] data = line.split(" "); List<Object> tuple = new ArrayList<Object>(); tuple.add(data[0]); // username tuple.add(data[1]); // campaign tuple.add(data[2]); // product tuple.add(data[3]); // click collector.emit(tuple); } br.close(); } catch (Exception e) { throw new RuntimeException(e); } } @Override public void success(TransactionAttempt tx) { successfulTransactions.incrementAndGet(); } @Override public void close() { } }