上一篇文章《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(); } }
最后我们运行下看下效果:
最后按照惯例,附上本案例的源码,登录后即可下载:
还没有评论,来说两句吧...