![](/img/trans.png)
[英]Getting ClassNotFound Exception in Flink SourceFunction
[英]Apache Flink: How to implement a SourceFunction?
我已經實現了一個從URL中獲取數據(String)的SourceFunction
。 然后我正在執行該數據的keyBy()
並應用一個10分鍾的窗口。 現在SourceFunction
只被調用一次,窗口對數據進行10分鍾的操作。 如何從SourceFunction
連續獲取數據?
DataStream<String> = env.addSource(MySource()) // This runs only once
.keyBy(some keyby function)
.window(for 10 minutes) // This runs for 10 minutes for the data obtained once by Source function
.process(some process function)
我想在一定的時間間隔內重復運行SourceFunction
,讓窗口處理連續獲取的數據。
您的SourceFunction
的run()方法應該是一個循環,它執行睡眠(或任何其他調度機制)來完成工作。
一種常見的模式是使用某種原子布爾值,在第一次調用run
時將其設置為true,並在調用cancel
時將其設置為false。
所以你在run
方法中有這樣的東西:
while (running) {
// fetch some data, can be async
ctx.collect(data);
Thread.sleep(period);
}
你可以按照自己認為合適的方式執行該部分,但重要的是,在實際完成或取消之前,不要退出SourceFunction
的run
方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.