I am newbie to Apache flink i am trying to filter words that starts with letter "N" and i am getting output but how can i get words which don't starts with word "N" below is the code i am using
package DataStream;
import org.apache.flink.api.common.functions.FilterFunction;
import org.apache.flink.api.common.functions.FlatMapFunction;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.streaming.api.datastream.DataStream;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.util.Collector;
public class WordStream {
public static void main(String[] args) throws Exception {
final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
DataStream<String> inputData = env.socketTextStream("localhost", 9999);
DataStream<String> filterData = inputData.filter(new FilterFunction<String>() {
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
public boolean filter(String value) throws Exception {
return value.startsWith("N");
}
});
DataStream<Tuple2<String, Integer>> tokenize = filterData
.flatMap(new FlatMapFunction<String, Tuple2<String, Integer>>() {
@Override
public void flatMap(String value, Collector<Tuple2<String, Integer>> out) throws Exception {
out.collect(new Tuple2<String, Integer>(value, Integer.valueOf(1)));
}
});
DataStream<Tuple2<String, Integer>> counts = tokenize.keyBy(0).sum(1);
counts.print();
env.execute("WordStream");
}
}
Can you suggest how to capture not matched words to another stream.