我想知道什么对我最好:Kafka流或Kafka消费者api或Kafka连接?
我想从主题中读取数据,然后进行一些处理并写入数据库。所以我写了消费者,但我觉得我可以编写Kafka流应用程序并使用它的有状态处理器来执行任何更改并将其写入数据库,这可以消除我的消费者代码,只需编写数据库代码。
我要插入记录的数据库是: HDFS - (插入原始JSON) MSSQL - (已处理的json)
另一个选择是Kafka connect,但是我发现现在没有json支持hdfs sink和jdbc sink连接器。(我不想写avro)并且创建模式也很复杂的嵌套消息。
或者我应该编写自定义Kafka连接来执行此操作。
因此,您是否应该编写Kafka消费者或Kafka流或Kafka连接? 什么会在性能方面更好,开销更少?
答案 0 :(得分:1)
您可以将它们全部组合使用
我已尝试将HDFS接收器用于JSON,但无法使用
org.apache.kafka.connect.json.JsonConverter
不清楚为什么不这样做。但是我认为您忘记设置schemas.enabled=false
。
当我设置
写入hdfsorg.apache.kafka.connect.storage.StringConverter
时,它可以工作,但它以字符串转义格式写入json对象。例如。{"name":"hello"}
作为"{\"name\":\"hello\"}"
是的,它将对JSON进行字符串转义
我要做的处理是基本验证和少量字段值转换
Kafka Streams或Consumer API可以验证。 Connect具有简单消息转换(SMT)功能
在某些用例中,您需要将数据“复制”到Kafka上;处理您的“原始”主题,使用使用者阅读它,然后将其重新生成为“干净”主题,您可以使用Kafka Connect从中写入数据库或文件系统。
答案 1 :(得分:0)
欢迎堆栈溢出!请采取行动https://stackoverflow.com/tour
请用精确的问题发帖,不要求提出意见 - 这会使网站更清晰,意见不是答案(并且取决于每个人的偏好)。询问“如何使用Kafka-connect with json” - 左右适合这个网站。
另外,请展示一些研究。
kafka消费者需要更少的开销 - kafka流和kafka连接使用kafka消费者,因此您总是能够减少开销,但也会失去所有好处(容忍失败,易于使用,支持等)< / p>
首先,它取决于您的处理。聚合?数数?验证?然后,您可以使用kafka流进行处理,并以您想要的格式将结果写入新主题。
然后,您可以使用kafka connect将数据发送到您的数据库。您不必使用avro,您可以使用其他格式的键/值,请参阅