Динамическая маршрутизация до приемника ввода-вывода в Apache Beam - PullRequest
0 голосов
/ 17 апреля 2019

Глядя на пример для ClickHouseIO для Apache Beam, имя выходной таблицы жестко закодировано:

 pipeline
   .apply(...)
   .apply(
     ClickHouseIO.<POJO>write("jdbc:clickhouse:localhost:8123/default", "my_table"));

Есть ли способ динамически направить запись в таблицу на основе ее содержимого?

т.е. если запись содержит table=1, она направляется на my_table_1, table=2 на my_table_2 и т. д.

1 Ответ

2 голосов
/ 17 апреля 2019

К сожалению, ClickHouseIO все еще в разработке не поддерживает это. BigQueryIO поддерживает динамические пункты назначения , так что это возможно с Beam.

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

Для этого вы можете подать запрос на добавление функции в Отслеживание ошибок Beam .

...