[英]How to read data from relational database in apache flink streaming
我們如何使用自定義數據源從關系數據庫中讀取數據。 我是flink流媒體的新手。 添加新的自定義數據源時,我遇到了問題。 因此,請幫助我添加自定義數據源並從源DB連續讀取數據 。
正如Chengzhi所建議的那樣,關系數據庫並非設計為以流方式處理,因此最好使用Kafka,Kinesis或其他系統。
但是,您可以編寫一個自定義源函數,該函數使用JDBC連接來獲取數據。 它必須連續查詢數據庫以獲取任何新數據。 這里的問題是,您需要一種方法來確定已讀取/處理的數據以及未讀取/處理的數據。 從我的頭頂開始,您可以使用一些方法,例如記住什么是最后處理的主鍵,並在后續查詢中使用它,例如:
SELECT * FROM events WHERE event_id > $last_processed_event_id;
或者,您可以清除某些事務中的events
表,例如:
SELECT * FROM unprocessed_events; DELETE FROM unprocessed_events WHERE event_id IN $PROCESSED_EVENT_IDS;
event_id
可以是使您可以唯一標識記錄的任何東西,也許可以是一些時間戳或一組字段。
要考慮的另一件事是,如果要提供任何合理at-least-once
或exactly-once
保證,則必須手動檢查( last_processed_even_id
偏移量)檢查點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.