2016-01-23 75 views
3

有一個名爲flink-jdbc的模塊,它僅支持基於JDBC InputFormat的非並行元組類型。Apache Flink:如何創建並行JDBC InputFormat?

爲了對JDBC使用並行InputFormat,似乎需要通過實現以下接口進行定製:org.apache.flink.core.io.InputSplit

所以在我的情況下,我如何定製實現JdbcInputSplit從數據庫並行查詢數據?

回答

6

Apache Flink不提供並行JDBC InputFormat。所以你需要自己實現一個。您可以使用非並行JDBC InputFormat作爲起點。

爲了並行查詢數據庫,您需要將查詢拆分爲幾個查詢,這些查詢涵蓋結果集的非重疊部分(並且尺寸相同)。這些較小的查詢中的每一個都將被封裝在一個InputSplit中,並交給輸入格式的一個並行實例。

拆分查詢是具有挑戰性的部分,因爲它取決於查詢和數據。所以你需要一些元信息來分割好。您可能希望將其委託給輸入格式的用戶,並要求提供一組查詢而不是單個查詢。您還應該檢查查詢的數據庫是否比單個查詢更好地處理並行請求。