我们之前在使用flatMap时,传了一个new FlatMapFunction匿名内部类。而这仅仅是其中的一种方式。
方式一:实现MapFunction接口
最简单的方式就是实现一个MapFunction接口,例如:
text.flatMap(new MyFlatMapFunction()).keyBy(new KeySelector<WC, Object>() {
@Override
public Object getKey(WC value) throws Exception {
return value.word;
}
}).timeWindow(Time.seconds(5)).sum("count").print().setParallelism(1);
public static class MyFlatMapFunction implements FlatMapFunction<String, WC> {
@Override
public void flatMap(String value, Collector<WC> out) throws Exception {
String[] tokens = value.toLowerCase().split(",");
for (String token : tokens) {
if (token.length() > 0) {
out.collect(new WC(token, 1));
}
}
}
}
方式二:匿名内部类
这种方式就是我们之前一直使用的方式。
方式三:java8 Lambdas
方式四:Rich functions
text.flatMap(new RichFlatMapFunction<String, WC>() {
@Override
public void flatMap(String value, Collector<WC> out) throws Exception {
String[] tokens = value.toLowerCase().split(",");
for (String token : tokens) {
if (token.length() > 0) {
out.collect(new WC(token, 1));
}
}
}
})
继承一个RichFlatMapFunction类
本文详细介绍了在Apache Flink中使用FlatMap函数的四种常见方式,包括实现MapFunction接口、使用匿名内部类、Java8 Lambdas以及Richfunctions。通过具体示例展示了如何将这些方法应用于数据流处理任务。
1037

被折叠的 条评论
为什么被折叠?



