上一篇文章《Flink应用开发系列(十三)数据集转换之MapFunction》我们介绍了mapfunction,本文的话我们介绍flatmapfunction。mapfunction对数据转换是1对1的,本文的flatmapfunction对数据转化是1对多的。同样实现的时候有两种方式,分别是:
1、匿名内部类 2、继承RichFlatMapFunction类
具体的实现可以忽略,但是我们一定要记得,这里的latmap是把数据集进行1对多的一个转换。下面我们来个实际的案例演示下,完整代码如下:
package org.example;
import org.apache.flink.api.common.functions.FlatMapFunction;
import org.apache.flink.api.java.DataSet;
import org.apache.flink.api.java.ExecutionEnvironment;
import org.apache.flink.util.Collector;
public class DataSetFlatMapFuncJob {
public static void main(String[] args) throws Exception {
ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
DataSet<String> input = env.fromElements("this is a word", "this is a test");
input.flatMap(new FlatMapFunction<String, String>() {
@Override
public void flatMap(String value, Collector<String> out) throws Exception {
String[] tokens = value.split(" ");
for (String token : tokens) {
out.collect(token);
}
}
}).print();
}
}最后我们运行下看下效果:
最后按照惯例,附上本案例的源码,登录后即可下载:










还没有评论,来说两句吧...