flink按照processTime处理流

1、日志类型

前十秒

aa
bb
cc

后十秒
bb
cc
dd

2、代码

import java.util.Properties
import java.util.regex.Pattern

import org.apache.flink.api.common.serialization.SimpleStringSchema
import org.apache.flink.streaming.api.TimeCharacteristic
import org.apache.flink.streaming.api.scala.{DataStream, StreamExecutionEnvironment}
import org.apache.flink.streaming.api.windowing.time.Time
import org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumer
import org.apache.flink.api.scala._


//1.	滚动窗口
//  Flink默认的时间窗口根据Processing Time 进行窗口的划分,将Flink获取到的数据根据进入Flink的时间划分到不同的窗口中。


object StreamingProcessTime {

  def main(args: Array[String]): Unit = {

    val environment: StreamExecutionEnvironment = StreamExecutionEnvironment.getExecutionEnvironment
    environment.setParallelism(1)
    environment.setStreamTimeCharacteristic(TimeCharacteristic.ProcessingTime)


    val log = environment.socketTextStream("192.168.231.3",1111)
    val value = log.map(value => {
      (value, 1)
    }).keyBy(0)
      .timeWindow(Time.seconds(10))
      .reduce((a,b)=>{(a._1,a._2+b._2)})
      .print()


    environment.execute()
  }
}

3、结果

每10s打印一次结果

(aa,1)
(cc,1)
(bb,1)

后十秒
(bb,1)
(dd,1)
(cc,1)

你可能感兴趣的:(flink)