package com.xavient.dip.samza;
import java.util.Arrays;
import java.util.stream.Stream;
import org.apache.log4j.Logger;
import org.apache.samza.config.Config;
import org.apache.samza.system.IncomingMessageEnvelope;
import org.apache.samza.system.OutgoingMessageEnvelope;
import org.apache.samza.system.SystemStream;
import org.apache.samza.task.InitableTask;
import org.apache.samza.task.MessageCollector;
import org.apache.samza.task.StreamTask;
import org.apache.samza.task.TaskContext;
import org.apache.samza.task.TaskCoordinator;
import com.xavient.dip.samza.Utils.FlatJsonConverter;
import com.xavient.dip.samza.hbaseSystem.HBaseSystemProducer;
public class ProcessTwitterFeed implements StreamTask, InitableTask {
private static final Logger log = Logger.getLogger(HBaseSystemProducer.class.getName());
Config conf;
public void process(IncomingMessageEnvelope envelope, MessageCollector collector, TaskCoordinator coordinator)
throws Exception {
try {
Object[] feed = FlatJsonConverter.convertToValuesArray((String) envelope.getMessage());
Stream<Object> stream = Arrays.stream(feed);
StringBuilder data = new StringBuilder();
stream.forEach(x -> data.append("," + x));
data.delete(0, 1);
collector.send(new OutgoingMessageEnvelope(new SystemStream("hdfsDump", "hdfs"), data.toString()));
collector.send(new OutgoingMessageEnvelope(new SystemStream("hdfsDump", "hdfs"), ""));
collector.send(new OutgoingMessageEnvelope(new SystemStream("hbaseDump", "hbase"), data.toString()));
} catch (Exception e) {
log.error(e.getMessage());
e.printStackTrace();
}
}
@Override
public void init(Config conf, TaskContext taskContext) throws Exception {
this.conf = conf;
}
}