【问题标题】:Druid only parse first json object of a json object list consumed from a single kafka messageDruid 仅解析从单个 kafka 消息消耗的 json 对象列表的第一个 json 对象
【发布时间】:2019-05-08 14:37:06
【问题描述】:

.NET/Java 应用程序每秒生成许多 json 对象 (15.00-90.000),其中包括有关金融交易的各种信息。这些消息被发送到 Apache Kafka 上的特定主题,该主题将由 Druid(OLAP 数据库)使用。

请在下方找到生产者和消费者之间的数据流。

Produce    --               Persist/Distribute  --    Consume   
Application (.Net/Java) --> Apache Kafka Topic <--- Apache Druid (Kafka Indexing Service) 

消息负载(json 对象列表)

{"filed1" : "value1" , "field2" : "value1"}
{"filed1" : "value2" , "field2" : "value2"}
...     
{"filed1" : "valueN" , "field2" : "valueN"}

问题在于 Druid 仅读取(并摄取)第一个 json 对象,而忽略其余的对象而没有事先错误或警告。

注意:如果一个接一个地发送 json 对象,则没有问题,但这在网络和应用程序方面都无效。此外,使用linger.msbatch.size kafka 客户端属性不是一个有效的解决方案,因为生成的消息数量是先验未知的。

【问题讨论】:

    标签: apache-kafka druid


    【解决方案1】:

    最后在花了很多时间研究之后,我发现 Druid(0.14) 不支持开箱即用的这个功能,因为所谓的exactly-once 概念。但是,从 0.12 版开始,您将能够编写一个扩展模块,使 Druid 能够将单个 Kafka 消息解析为多个单独的 Druid 行。一个例子可以在here找到。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-20
      • 1970-01-01
      • 2018-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多