阅读本文之前,需要先了解Flink-Tuple

FlatMapFunction接口是一个函数式接口(FunctionalInterface),它的签名如下

public interface FlatMapFunction<T, O> extends Function, Serializable

该接口有一个必须要实现的抽象方法,签名如下

void flatMap(T value, Collector<O> out) throws Exception;

这个方法是这样使用的,首先Collector这个单词是收集者的意思,想必如果你玩LOL,那么应该知道这个装备,这个方法的意思就是flink会传递给我们一个value,然后我们对这个value进行各种操作,最终得到一个值A或者多个值B,然后我们在将这个A或者B,放到out中(其实就是一个引用),之后flink再使用这个out做其他事情,下面的代码示例表达了输入一个字符串"怀念二抱三抱",返回6个汉字,分别是"怀",“念”,“二”,“抱”,“三”,“抱”


// 若value="怀念二抱三抱"
// 则执行完该方法,可以把out理解成List,它的长度是6,分别是"怀","念","二","抱","三","抱"
@Override
public void flatMap(String value, Collector<Tuple1<String>> out) throws Exception {
	String[] split = value.split("");
	for (String s : split) {
		out.collect(new Tuple1(s));
	}
}
04-03 18:48