三、Flink常用的转换算子

Flink常用转换算子

  • 常用转换算子类型
  • 一、基本转换算子
    • 1、map
    • 2、filter
    • 3、flatMap
  • 二、键控流转换算子
    • 1、keyBy:分组聚合,类似spark的groupByKey算子,将相同的key存到同一个分区中。
    • 2、 滚动聚合算子:由KeyedStream对象来调用,也就是需要用在keyBy之后。
  • 三、多流转换算子
    • 1、union:将多条流数据合并到一条流中
    • 2、connect:将两条流数据合并到一条流中
  • 三、分布式转换算子
    • 1、随机将数据打散到不同的分区(Random)
    • 2、轮询的将数据分配到不同的分区(Round-Robin)
    • 3、广播(Broadcast)
    • 4、Global
    • 4、Custom


常用转换算子类型

  • 基本转换算子
  • 键控流转换算子
  • 多流转换算子
  • 分布式转换算子

一、基本转换算子

与scala的函数,spark的算子很想,用法类似。

1、map

调用.map()方法,实现MapFunction()接口,常用lambda表达式
  //(1)lambda表达式
  stream.map(r -> r.id);
  //(2)直接重写接口方法
  stream.map(new MapFunction<SensorReading, Object>() {
   
            @Override
            public Object map(SensorReading sensorReading) throws Exception {
   
                return sensorReading.id;
            }
        })
  //(3)
  stream.map(new MyMapFunction())
  //在main方法外自定义公共静态类实现MapFunction方法。
    public static class MyMapFunction implements MapFunction<SensorReading,String>{
   

        @Override
        public String map(SensorReading sensorReading) throws Exception {
   
            return sensorReading.id;
        }
    }

2、filter

调用.filter()方法,实现FilterFunction()接口,常用lambda表达式,与map相似

3、flatMap

调用.flatMap()方法,实现FlatMapFunction()接口,使用collector.collect()方法想下游发送数据。
        //(1)
        source.flatMap(new FlatMapFunction<String, String>() {
   
            @Override
            public void flatMap(String value, Collector<String> collector) throws Exception {
   
                if (value.equals("white")){
   
                    collector.collect(value);
                }else if (value

你可能感兴趣的:(flink学习,java,flink,spark,stream,lambda)