package com.xavient.dip.apex.operator;
import com.datatorrent.api.AutoMetric;
import com.datatorrent.api.DefaultInputPort;
import com.datatorrent.api.DefaultOutputPort;
import com.datatorrent.common.util.BaseOperator;
import com.xavient.dip.common.utils.FlatJsonConverter;
public class TwitterStreamOperator extends BaseOperator {
@AutoMetric
private long tuplesCount;
@AutoMetric
private long errorTuples;
public final transient DefaultOutputPort<Object> errorPort = new DefaultOutputPort<>();
public final transient DefaultOutputPort<Object[]> hdfsOutputPort = new DefaultOutputPort<>();
public final transient DefaultOutputPort<Object[]> hBaseOutputPort = new DefaultOutputPort<>();
// @InputPortFieldAnnotation(schemaRequired = true)
public final transient DefaultInputPort<Object> inputPort = new DefaultInputPort<Object>() {
@Override
public void process(Object record) {
Object[] data = FlatJsonConverter.convertToValuesArray(new String((byte[]) record));
hdfsOutputPort.emit(data);
hBaseOutputPort.emit(data);
}
};
@Override
public void beginWindow(long windowId) {
super.beginWindow(windowId);
errorTuples = tuplesCount = 0;
}
}