【问题标题】:Can I read stream data into Apache Beam from a cometd topic using java?我可以使用 java 从 cometd 主题将流数据读入 Apache Beam 吗?
【发布时间】:2017-11-08 14:56:49
【问题描述】:

我有一个生产者在一个 cometd 主题上吐出消息。我需要从这个主题中挑选和处理消息流。我可能花了两个小时试图找到一种方法将 cometd 上的消息直接摄取到 apache Beam 中。我似乎在这里碰壁了。我知道我有以下选择:

  1. 从主题获取,将数据写入kafka,然后将数据从kafka推送到beam。
  2. 从主题获取,将数据写入 GCP 上的发布/订阅,然后将其推送到 Apache Beam。

上述两个选项似乎都在架构中包含了一个额外的组件。有没有更好的方法来做到这一点?有什么例子吗?代码示例?指针?

【问题讨论】:

    标签: java apache-beam gcp cometd


    【解决方案1】:

    我不知道有人已经为 Beam 编写或启动了 CometD 连接器。当前的连接器在https://beam.apache.org/documentation/io/built-in/ 中列出。要编写自己的代码,您可以尝试模仿其他基本流连接器之一的代码,例如 AMQP、MQTT 或 JMS(Kafka 和 Pubsub 非常先进,我不建议通过它们的源代码来指导您的实现)。

    【讨论】:

    • 感谢您的回答,是的,我确实查看了他们可用的现有和即将推出的集成。我也可能正在寻找方法确认,最好的想法是继续实施连接器还是能够在两者之间使用另一个组件?
    • 确认:如果不实现您自己的 UnboundedSource,目前没有从流式源中提取数据的好方法。 beam.apache.org/blog/2017/08/16/splittable-do-fn.html 最终会变得更好。可能存在一些特殊情况,您可以仅捎带 GenerateSequence.from(0) 并应用 ParDo 忽略每个元素并从 cometd 提取消息,但这不会具有适当的容错行为,例如如果cometd有acking的概念,你将无法在正确的时间进行ack,如果重试,数据会丢失。
    • 谢谢@jkff :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-01
    • 2023-02-02
    • 2021-05-20
    • 1970-01-01
    • 1970-01-01
    • 2022-12-24
    • 1970-01-01
    相关资源
    最近更新 更多