在Apache Beam中动态路由到IO接收器

时间:2019-04-17 16:27:17

标签: apache-beam clickhouse

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 个答案:

答案 0 :(得分:2)

不幸的是,ClickHouseIO仍为in development不支持此功能。 BigQueryIO确实支持Dynamic Destinations,因此Beam可以实现。

当前ClickHouseIO中的限制是围绕转换数据以匹配目标表架构。解决方法是,如果在创建管道时知道目标表,则可以为每个表创建一个ClickHouseIO,然后使用数据将其路由到IO的正确实例。

您可能要为此在Beam bug tracker中提出功能请求。