Flink自定义数据源Source

实现自定义数据源

import org.apache.flink.streaming.api.functions.source.SourceFunction
import org.apache.flink.streaming.api.scala._
import scala.util.Random

//自定义数据类型
case class WaterSensor(id:String,ts:Long,vc:Double)
//创建类并继承SourceFunction指定类型
class MySource extends SourceFunction[WaterSensor]{
    
    
  val flag=true
  //重写run方法
  override def run(sourceContext: SourceFunction.SourceContext[WaterSensor]): Unit = {
    
    
    while(flag){
    
    
      sourceContext.collect(WaterSensor("sensor_"+new Random().nextInt(3),16092345345623L,new Random().nextInt(5)+40))
      //睡眠1秒
      Thread.sleep(1000)
    }
  }
  override def cancel(): Unit = ???
}

object SourceMy{
    
    
  def main(args: Array[String]): Unit = {
    
    
  //创建流处理执行环境
    val env: StreamExecutionEnvironment = StreamExecutionEnvironment.getExecutionEnvironment
    //获取自定义数据源中数据
    val mydefDStream: DataStream[WaterSensor] = env.addSource(new MySource)
    //输出获取的数据
    mydefDStream.print()
    env.execute("MySource"}
}

启动后输出数据
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_38468167/article/details/111871387