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();

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

请各位自行选择

谢谢

相关推荐
蚁巡信息巡查系统6 小时前
网站信息发布再巡查机制怎么建立?
大数据·人工智能·数据挖掘·内容运营
6 小时前
java关于内部类
java·开发语言
好好沉淀6 小时前
Java 项目中的 .idea 与 target 文件夹
java·开发语言·intellij-idea
lsx2024066 小时前
FastAPI 交互式 API 文档
开发语言
云边云科技_云网融合6 小时前
AIoT智能物联网平台:架构解析与边缘应用新图景
大数据·网络·人工智能·安全
VCR__6 小时前
python第三次作业
开发语言·python
码农水水6 小时前
得物Java面试被问:消息队列的死信队列和重试机制
java·开发语言·jvm·数据结构·机器学习·面试·职场和发展
wkd_0076 小时前
【Qt | QTableWidget】QTableWidget 类的详细解析与代码实践
开发语言·qt·qtablewidget·qt5.12.12·qt表格
东东5166 小时前
高校智能排课系统 (ssm+vue)
java·开发语言
余瑜鱼鱼鱼6 小时前
HashTable, HashMap, ConcurrentHashMap 之间的区别
java·开发语言