Flink(三):无状态转换map() 和flatMap()
一、简介
算子map()
和flatMap()
是用于实现无状态转换的基本操作。
二、map()
map()算子接收一个MapFunction接口参数,对元素进行一对一转换,即每个元素对应恰好一个结果。由于MapFunction是函数式接口,因此可以使用Lambda表达式。代码如下:
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
DataStream<Integer> source = env.fromElements("to be or not to be that is the question".split(" ")).map(String::length);
三、flatMap()
flatMap() 算子接收一个FlatMapFunction接口参数,对元素进行一对n转换,即每个元素映射到零个或多个结果。
函数:
调用代码:
try { List<Long> nums = Lists.newArrayList(); nums.add(1L); nums.add(2L); nums.add(3L); nums.add(4L); nums.add(5L); StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); DataStream<Integer> source = env.fromCollection(nums).flatMap(new OddNumber()); source.print(); env.execute(); } catch (Exception e) { e.printStackTrace(); }
返回结果:
6> 3 8> 5 4> 1