实现自定义数据源
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")
}
}
启动后输出数据