Apache Flink:如何创建并行JDBC InputFormat?

时间:2016-01-23 03:05:11

标签: apache-flink

有一个名为flink-jdbc的模块,它只支持基于JDBC InputFormat的非并行元组类型。

为了对InputFormat使用并行JDBC,似乎需要通过实现接口来自定义:org.apache.flink.core.io.InputSplit

所以在我的情况下,如何自定义实现JdbcInputSplit从数据库并行查询数据?

1 个答案:

答案 0 :(得分:6)

Apache Flink不提供并行JDBC InputFormat。所以你需要自己实现一个。您可以使用非并行JDBC InputFormat作为起点。

为了并行查询数据库,您需要将查询拆分为多个查询,这些查询涵盖结果集的非重叠(且理想情况下大小相同)的部分。这些较小的查询中的每一个都将包装在InputSplit中并传递给输入格式的并行实例。

拆分查询是一个具有挑战性的部分,因为它取决于查询和数据。所以你需要一些元信息才能得到好的分裂。您可能希望将此委托给输入格式的用户,并要求一组查询而不是单个查询。您还应该检查查询的数据库是否比单个查询更好地处理并行请求。