druid.io:通过来自kafka的流更新/覆盖现有数据(DruidKafka索引服务)

1rhkuytd  于 2021-06-07  发布在  Kafka
关注(0)|答案(2)|浏览(472)

我正在使用druidkafka索引服务从kafka加载流。
但是我上传的数据总是会更改的,所以我需要再次重新加载它,如果已经加载了数据,就要避免重复和冲突。
我研究有关更新Druid现有数据的文档。
但是所有关于hadoop批量摄取和查找的信息。
有可能在Kafka流期间更新现有的Druid数据吗?
换句话说,我需要使用kafka索引服务(来自kafka的流)用新值重写旧值。
可以是任何类型的设置来重写副本吗?

qq24tv8q

qq24tv8q1#

以下是有关如何在druid中更新现有数据的帮助页面:
https://druid.apache.org/docs/latest/ingestion/update-existing-data.html

tuwxkamq

tuwxkamq2#

从某种意义上说,druid是一个时间序列数据库,在这个数据库中,每个时间间隔的数据都会被“最终确定”并写入日志。它进行聚合和优化列,以便在“确定”数据时进行存储和轻松查询。
我所说的“最终确定”,是指Druid假设指定时间间隔的数据已经存在,并且它可以安全地在这些数据之上进行计算。所以这实际上意味着不支持您更新数据(就像在数据库中一样)。您编写的任何数据都将被视为新数据,并不断添加到计算中。
但是druid在这个意义上是不同的,它提供了一种上传历史数据的方法,在实时索引已经发生的同一时间段。此批上载将用新的段覆盖任何段,进一步的查询将反映最新上载的批数据。
所以我恐怕唯一的选择就是分批摄入。也许您仍然可以将数据发送到kafka,但是有一个spark/gobbin工作,它可以执行重复数据消除和写入hadoop。然后有一个简单的cron作业将这些作为一个批重新索引到druid上。

相关问题