Я использую Apache Beam KafkaIO в качестве источника моего конвейера.
Мне нужно прочитать две темы Kafka topic1 и topic2, а затем объединить эти входные данные как один для последующих преобразований.
Проблема состоит в том, что topic1 и topic2 содержат сообщения с несовместимыми схемами, которые, когда я прочитаю, сопоставят сообщения из каждой темы с одной и той же схемой.
Таким образом, конвейер, который я собираюсь найти, выглядит примерно так:
<read topic1> <read topic2>
| |
<map to Foo> <map to Foo>
| |
\ /
<use same subsequent transforms on Foo>
Один способ, который я нашел, чтобы просто решить эту проблему, это подписаться сразу на несколько тем, используя withTopics(...)
, а затем определить в общем KafkaRecord<K,V>
, из какой темы пришло сообщение, и затем выполнить сопоставление дляэто.
Это выглядит немного неуклюже?Есть ли правильный способ сделать это в Apache Beam?