• 二.Flink 流处理API之Transform


    转换算子

    1.map

    DataStream<Integer> mapStram = dataStream.map(new MapFunction<String, Integer>() {
        public Integer map(String value) throws Exception {
            return value.length();
        }
    });

    2.flatMap

    DataStream<String> flatMapStream = dataStream.flatMap(new FlatMapFunction<String, String>() {
        public void flatMap(String value, Collector<String> out) throws Exception {
            String[] fields = value.split(",");
            for( String field: fields )
                out.collect(field);
        }
    });

    flatMap算子和map有些相似,输入都是数据流中的每个元素,与之不同的是,flatMap的输出可以是零个、一个或多个元素,它的输出元素放在了Collector类对象中事实上,flatMap转换算子是filtermap的泛化。所以flatMap可以实现mapfilter算子的功能。

    3. Filter

    //3.过滤,取出30度以上的数据
    SingleOutputStreamOperator<String> filter = fileDS.filter(new FilterFunction<String>() {
    @Override
    public boolean filter(String value) throws Exception {
    double temp = Double.parseDouble(value.split(",")[2]);
    return temp > 30.0D;
    }
    });
    4. KeyBy

    DataStream KeyedStream:逻辑地将一个流拆分成不相交的分区,每个分区包含具有相同key的元素,在内部以hash的形式实现的。

    5.滚动聚合算子

     

    这些算子可以针对KeyedStream的每一个支流做聚合。

     

    sum()   min()  max()  minBy()  maxBy()

    //分组
    KeyedStream<SensorReading, Tuple> keydStream = sensorDS.keyBy("id");
    //求每个传感器最高温度
    SingleOutputStreamOperator<SensorReading> maxTemp = keydStream.max("temp");
    SingleOutputStreamOperator<SensorReading> maxByTemp = keydStream.maxBy("temp")
    6.Reduce

    KeyedStream DataStream:一个分组数据流的聚合操作,合并当前的元素和上次聚合的结果,产生一个新的值,返回的流中包含每一次聚合的结果,而不是只返回最后一次聚合的最终结果。

    7 .Split Select

    Split

    DataStream SplitStream:根据某些特征把一个DataStream拆分成两个或者多个DataStream

    Select

    SplitStreamDataStream:从一个SplitStream中获取一个或者多个DataStream

    8.Connect CoMap

    Connect

    DataStream,DataStream ConnectedStreams:连接两个保持他们类型的数据流,两个数据流被Connect之后,只是被放在了一个同一个流中,内部依然保持各自的数据和形式不发生任何变化,两个流相互独立。

     

    CoMap,CoFlatMap

    ConnectedStreams → DataStream:作用于ConnectedStreams上,功能与mapflatMap一样,对ConnectedStreams中的每一个Stream分别进行mapflatMap处理。

     

    9.Union

    DataStream DataStream:对两个或者两个以上的DataStream进行union操作,产生一个包含所有DataStream元素的新DataStream

     

    Connect Union 区别:

     

    1Union之前两个流的类型必须是一样Connect可以不一样,在之后的coMap中再去调整成为一样的。

     

    2. Connect只能操作两个流,Union可以操作多个。

     

     

     

     

     

     

     





     

  • 相关阅读:
    C语言-typedef和#define
    C语言-指针
    C语言-数据结构-结构体
    数据结构笔记
    树的存储结构
    树的基本知识
    关于矩阵
    LaTex
    札记-碎碎念
    一个大神的个人博客 博客桌面风格很棒 二次元
  • 原文地址:https://www.cnblogs.com/whdd/p/14055819.html
Copyright © 2020-2023  润新知