我想知道什么对我最好:Kafka流或Kafka消费者api或Kafka连接?
我想从主题中读取数据,然后进行一些处理并写入数据库 . 所以我写了消费者,但我觉得我可以编写Kafka流应用程序并使用它的有状态处理器来执行任何更改并将其写入数据库,这可以消除我的消费者代码,只需要编写db代码 .
我要插入我的记录的数据库是:HDFS - (插入原始JSON)MSSQL - (处理过的json)
另一个选择是Kafka connect但是我发现现在没有json支持hdfs sink和jdbc sink连接器 . (我不想用avro编写)并且创建模式也很复杂的嵌套消息 .
或者我应该编写自定义Kafka连接来执行此操作 .
那么你是否应该写我是否应该写Kafka消费者或Kafka流或Kafka连接?什么会在性能方面更好,并且开销更少?
2 回答
欢迎堆栈溢出!请小伙子https://stackoverflow.com/tour
请用精确的问题发帖,不要求意见 - 这会使网站更清晰,意见不是答案(并且受每个人的偏好) . 问“如何使用Kafka-connect with json” - 左右适合这个网站 .
另外,请展示一些研究 .
较少的开销是kafka消费者 - kafka流和kafka连接使用kafka消费者,因此您将始终能够减少开销,但也会失去所有好处(容忍失败,易于使用,支持等)
首先,它取决于您的处理 . 聚合?数数?验证?然后,您可以使用kafka流进行处理,并以您想要的格式将结果写入新主题 .
然后,您可以使用kafka connect将数据发送到您的数据库 . 你没有被迫使用avro,你可以使用其他格式的键/值,请参阅
Kafka Connect HDFS Sink for JSON format using JsonConverter
Kafka Connect not outputting JSON
您可以将它们全部组合使用
不清楚为什么不 . 但我会假设你忘了设置
schemas.enabled=false
.是的,它会对JSON进行字符串转义
Kafka Streams或Consumer API能够进行验证 . Connect能够进行简单消息转换(SMT)
一些用例,你需要“重复数据”到Kafka;处理你的“原始”主题,使用消费者阅读它,然后将其生成回“清理”主题,从中可以使用Kafka Connect写入数据库或文件系统 .