Apache Flink: как создать параллельный JDBC InputFormat?

Существует модуль с именем flink-jdbc, который поддерживает только непараллельный тип кортежа на основе JDBC InputFormat.

Чтобы использовать параллельный InputFormat для JDBC, кажется, нужно настроить, реализовав интерфейс: org.apache.flink.core.io.InputSplit.

Итак, в моем случае, как я могу реализовать JdbcInputSplit для параллельного запроса данных из базы данных?


person jason zhang    schedule 23.01.2016    source источник


Ответы (1)


Apache Flink не предоставляет параллельный JDBC InputFormat. Поэтому вам нужно реализовать его самостоятельно. В качестве отправной точки можно использовать непараллельный JDBC InputFormat.

Чтобы запросить базу данных параллельно, вам нужно разделить запрос на несколько запросов, которые охватывают непересекающиеся (и в идеале одинакового размера) части набора результатов. Каждый из этих небольших запросов будет заключен в InputSplit и передан параллельному экземпляру входного формата.

Разделение запроса является сложной частью, поскольку оно зависит от запроса и данных. Так что вам нужно немного метаинформации, чтобы придумать хорошие сплиты. Возможно, вы захотите делегировать это пользователю формата ввода и запросить набор запросов вместо одного. Вы также должны убедиться, что запрашиваемая база данных обрабатывает параллельные запросы лучше, чем один запрос.

person Fabian Hueske    schedule 25.01.2016