Flink的转换算子——map

map是大家非常熟悉的大数据操作算子,主要用于将数据流中的数据进行转换,形成新的数据流。简单来说,就是一个"一一映射",消费一个元素就产出一个元素。

我们只需要基于DataStream调用map()方法就可以进行转换处理。方法需要传入的参数是接口MapFunction的实现;返回值类型还是DataStream,不过泛型(流中的元素类型)可能改变。

下面的代码,实现了提取WaterSensor中的id字段的功能。

java 复制代码
import com.atguigu.bean.WaterSensor;
import org.apache.flink.api.common.functions.MapFunction;
import org.apache.flink.streaming.api.datastream.DataStreamSink;
import org.apache.flink.streaming.api.datastream.DataStreamSource;
import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;

public class Mapdeam {
    public static void main(String[] args) throws Exception {
        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
        env.setParallelism(1);
        DataStreamSource<WaterSensor> senseDS = env.fromElements(new WaterSensor("s1", 1l, 1)
                , new WaterSensor("s1", 2l, 2),
                new WaterSensor("s1", 3l, 3)
        );




        SingleOutputStreamOperator<String> map = senseDS.map(sense -> sense.getId());
        map.print();

        env.execute();
    }
}

map是一个一对一的算子,也就是说输入一个数据那经过map算子之后也只会输出一个数据

根据代码中

java 复制代码
SingleOutputStreamOperator<String> map = senseDS.map(sense -> sense.getId());

可知 是将senseDS的数据经过(sense -> sense.getid())的表达式进行的输出

也可以使用匿名类的方法实现如下:

java 复制代码
 senseDS.map(new MapFunction<WaterSensor, String>() {
            @Override
            public String map(WaterSensor waterSensor) throws Exception {
                return waterSensor.getId();
            }
        }).print();

但是通过直观感受使用第一个方法代码比较简洁

请各位自行选择

谢谢

相关推荐
大大大大晴天15 小时前
Flinksql内置函数不够用?一文弄懂UDF
flink
Alan_751 天前
高并发架构优化实战:Redis 调优、数据库扩展与协同架构三大核心模块
api
大大大大晴天2 天前
Hudi Metadata Table 与 Hive Sync (HMS)怎么选?
大数据
手可摘星辰7773 天前
一次线上FlinkCDC异常排查复盘
大数据·flink
大大大大晴天3 天前
Hudi技术内幕:Metadata Table原理与实践
大数据
大大大大晴天4 天前
Hudi技术内幕:深入解析Index索引机制
大数据
阿里云大数据AI技术4 天前
Flink Forward Asia 2026 深圳启幕:Agentic Streaming for AI,开启实时智能新范式
大数据·flink
SelectDB4 天前
阶跃星辰基于 SelectDB 构建 PB 级 Agent 可观测平台
大数据·数据库·aigc
tonyabasy5 天前
Flink 实时数仓开发实战:SQL中也能做到资源精细化管理
flink
大大大大晴天6 天前
浅聊Flink实时关联计算的不适用场景
flink