Есть ли способ получить динамический запрос или выполнить несколько запросов с помощью конвейера Apache Beam? - PullRequest
0 голосов
/ 21 января 2019

Я использую Apache Beam и облачный поток данных Google для вставки информации в облачную базу данных SQL.До сих пор это работало отлично, записывая в одну таблицу.Отправляемая информация расширяется, включая информацию, предназначенную для другой таблицы в базе данных.

Мне было бы любопытно, если бы был способ динамически использовать запрос SQL на основе информации, которую я получаю, или я могу каким-то образом создать конвейер для выполнения нескольких запросов?Либо будет работать ...

Или я застрял с необходимостью создать отдельный конвейер?

Приветствия,

РЕДАКТИРОВАТЬ: Добавление моей текущей конфигурации конвейера

MainPipeline = Pipeline.create(options);

    MainPipeline.apply(PubsubIO.readStrings().fromSubscription(MAIN_SUBSCRIPTION))
    .apply(JdbcIO.<String> write()
        .withDataSourceConfiguration(JdbcIO.DataSourceConfiguration.create("com.mysql.cj.jdbc.Driver", JDBC_URL)
            .withUsername(JDBC_USER).withPassword(JDBC_PASS))
        .withStatement(QUERY_SQL).withPreparedStatementSetter(new NewPreparedStatementSetter() {
        }));

1 Ответ

0 голосов
/ 22 января 2019

Я не думаю, что у вас могут быть динамические запросы на JdbcIO на основе элементов ввода, насколько я вижу, он настраивается один раз во время создания.

Однако я могу подумать о нескольких возможных обходных путях, если они подойдут для вашего варианта использования.

Один из них - написать свой собственный ParDo, в котором вы будете вызывать драйвер JDBC вручную.Это будет в основном повторная реализация некоторой части JdbcIO с добавлением новых функций.Такие ParDo могут быть настолько гибкими, насколько вам угодно.

Другой способ - разделить вход PColleciton на несколько выходов .Это сработает, если ваш вариант использования ограничен каким-то предопределенным набором запросов, которые вы можете выбрать на основе входных данных.Таким образом, вы разбиваете входные данные на несколько PCollections, а затем присоединяете по-разному настроенные операции ввода-вывода к каждому.

...