Можем ли мы выполнить несколько запросов вставки в функции JDBCIO.write в одном соединении CloudSQL с конвейером луча apache? - PullRequest
0 голосов
/ 22 февраля 2019

Я использую JDBCIO.write() функцию Apache Beam для записи потоковых данных в CloudSQL.Согласно моему требованию, я должен записывать одни и те же данные в две разные таблицы.
На самом деле я создаю два разных подключения JDBCIO для записи данных в таблицы cloudSQL.
Есть ли способ написать два запроса на вставку в один JDBCIO.write()function?

outputStringPcollection
            .apply("Write to CloudSQL table",
                    JdbcIO.<String> write()
                            .withDataSourceConfiguration(JdbcIO.DataSourceConfiguration
                                    .create(DRIVER_CLASS_NAME,
                                            URL)
                                    .withUsername(USERNAME)
                                    .withPassword(PASSWORD)
                            .withStatement(insertQueryTable1)
                            .withPreparedStatementSetter(new SetQueryParameter())
                            .withStatement(insertQueryTable2)
                            .withPreparedStatementSetter(new SetQueryParameter()));

Я пытался выполнить приведенный выше код, написав два разных запроса на вставку в одном соединении JDBC, но данные вставляются только в одну таблицу (т. е. Table2).

Итак, можем ли мывыполнить несколько запросов в одном соединении?Если да, есть ли другой способ сделать?

Заранее спасибо.

1 Ответ

0 голосов
/ 29 мая 2019

Нет, вы не можете сделать это за одно соединение.Лучшее, что вы можете сделать, это:

JdbcIO<String> configuredWrite = JdbcIO.<String>.withDataSourceConfiguration(...);

outputStringPcollection.apply(configuredWrite.withStatement(s1)...);

outputStringPcollection.apply(configuredWrite.withStatement(s2)...);
...