import com.yan.product.utils.productInfo
import org.apache.flink.configuration.Configuration
import org.apache.flink.streaming.api.functions.source.{RichSourceFunction, SourceFunction}
import java.sql.{Connection, DriverManager, PreparedStatement}
class trafficSpeedLimitSourceFunc extends RichSourceFunction[productInfo] {
private var running = true
private var conn: Connection = _
private var sql: PreparedStatement = _
//初始化jdbc,只在未启动的时候执行一次
override def open(parameters: Configuration): Unit = {
conn = DriverManager.getConnection("jdbc:mysql://localhost/test", "root", "root")
sql = conn.prepareStatement("select companyCode,storeCode,productCode,price from productinf")
}
override def run(ctx: SourceFunction.SourceContext[productInfo]): Unit = {
while (running) {
val set = sql.executeQuery()
while (set.next()) {
var companyCode: String = set.getString("companyCode")
var storeCode: String = set.getString("storeCode")
var productCode: String = set.getString("productCode")
var price: Double = set.getDouble("price ")
ctx.collect(productInfo(companyCode, storeCode,productCode, price))
}
//半小时执行一次
Thread.sleep(30 * 60 * 1000)
}
}
override def cancel(): Unit = {
running = false
}
}
flink自定义jdbcsource
于 2022-04-24 18:05:56 首次发布