一、传感器温度差值大于1.7
1.带状态的FlatMap算子
import com.atguigu.day2.{
SensorReading, SensorSource}
import org.apache.flink.api.common.functions.RichFlatMapFunction
import org.apache.flink.api.common.state.{
ValueState, ValueStateDescriptor}
import org.apache.flink.configuration.Configuration
import org.apache.flink.streaming.api.scala._
import org.apache.flink.streaming.runtime.operators.GenericWriteAheadSink
import org.apache.flink.util.Collector
object FlatMapWithStateExample {
def main(args: Array[String]): Unit = {
val env = StreamExecutionEnvironment.getExecutionEnvironment
env.setParallelism(1)
val stream = env
.addSource(new SensorSource)
.keyBy(_.id)
.flatMapWithState[(String, Double, Double), Double] {
case (in: SensorReading, None) => {
(List.empty, Some(in.temperature))
}
case (r: SensorReading, lastTemp: Some[Double]) => {
val tempDiff = (r.temperature - lastTemp.get).abs
if (tempDiff > 1.7) {
(List