druid - 德鲁伊如何在 Kafka 索引服务中删除重复项
问题描述
我将 DRUID 与 Kafka 索引服务一起使用。我试图了解它如何处理重复消息。
例子
考虑我在 Kafka 主题[仅 1 个分区] 中有以下消息
[偏移量=100]
{
"ID":4,
"POINTS":1005,
"CREATED_AT":1616258354000000,
"UPDATED_AT":1616304119000000
}
现在考虑 24 小时后,以某种方式再次将相同的消息推送到主题。
[偏移量=101]
{
"ID":4,
"POINTS":1005,
"CREATED_AT":1616258354000000,
"UPDATED_AT":1616304119000000
}
注意:有效载荷没有改变。
实际:现在,在 DRUID 中,我再次看到相同的消息。
预期:我期望的是,由于有效负载没有更改,因此应该忽略消息。
我的时间戳列是CREATED_AT
解决方案
你能确定永远不会有两个具有相同时间戳的唯一事件而不是重复事件吗?如果是这样,您可以尝试使用汇总来消除重复项。
您可以在粒度规范中设置它,并且 queryGranularity 基本上会根据该粒度截断所有时间戳,如果所有维度都相同,则使用您在规范中设置的聚合函数将它们组合起来。
对于聚合函数,您需要使用 MAX 或 MIN 之类的函数,因为 SUM 会将它们相加。
如果您有多个 kafka 分区,这将失败,但可以通过重新索引来修复。
推荐阅读
- python - 如何在网页上实时嵌入 Jupyter?
- vba - Excel VBA Do While 循环打开最近的工作簿无限循环
- android - Jitsi Meet 给出错误“程序类型已存在:com.facebook.jni.HybridData$Destructor”
- mysql - aws rds binlog 文件丢失
- oracle - PLS-00306:调用 Oracle SP 时参数的数量或类型错误
- angular - 角度材料输入类型时间在 IE 11 上不起作用,在所有其他浏览器上都能完美运行
- uwp - 是否可以从导航视图项触发弹出?
- java - 使用 GSON 解析带有元素数组的 JSON 对象
- c++ - C++ Primer 12.1:我可以用静态向量实现 StrBlob
班内成员? - php - 在 Woocommerce 3 中删除订单项目后未保存重新计算的总数