【发布时间】:2017-01-10 17:23:15
【问题描述】:
我正在使用 Kafka Streams (v0.10.0.1) 编写应用程序,并希望使用查找数据来丰富我正在处理的记录。该数据(带时间戳的文件)每天(或每天 2-3 次)写入 HDFS 目录。
如何在Kafka Streams 应用程序中加载它并加入实际的KStream?
当新文件到达那里时,从 HDFS 重新读取数据的最佳做法是什么?
或者切换到Kafka Connect 并将RDBMS 表内容写入Kafka 主题会更好吗?所有Kafka Streams 应用程序实例都可以使用该主题?
更新:
正如建议的那样 Kafka Connect 将是要走的路。因为查找数据在 RDBMS 中每天更新,所以我正在考虑按计划运行 Kafka Connect one-off job,而不是保持连接始终打开。是的,因为语义和保持连接始终打开并确保它不会被中断的开销......等等。对我来说,在这种情况下进行预定提取看起来更安全。
查找数据不大,记录可能被删除/添加/修改。我也不知道如何始终将完整转储到 Kafka 主题并截断以前的记录。启用日志压缩并为已删除的键发送空值可能不起作用,因为我不知道源系统中已删除什么。此外,我无法控制压缩发生时的情况。
【问题讨论】:
-
我对 Kafka Connect 的细节不熟悉,但是使用它来将数据放入主题中是推荐使用 Kafka Streams 处理它的方式。但是,如果 Connect 连续更新而不是每天更新,对您的情况会不利吗?作为替代方案,您始终可以使用允许执行任意代码的处理器 API。但是,它使用起来要花很多力气。
标签: hadoop apache-kafka apache-kafka-streams confluent-platform apache-kafka-connect