Flink(三):无状态转换map() 和flatMap()

发布时间 2023-11-09 17:16:42作者: renxiaoren

一、简介

  算子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