我正在使用 Druid Kafka indexing service从Kafka加载流 .
但是我上传的数据总是被更改,所以我需要重新加载它,并且如果数据已经加载则避免重复和冲突 .
我在德鲁伊研究关于Updating Existing Data的文档 .
但有关Hadoop Batch Ingestion的所有信息,Lookups .
是否有可能在Kafka流期间更新现有的德鲁伊数据?
换句话说,我需要使用 Kafka indexing service (来自Kafka的流)用新的值重写旧值 .
可能是重写重复的任何设置?
1 回答
德鲁伊在某种程度上是一个时间序列数据库,其中数据被“最终化”并在每个时间间隔写入日志 . 它可以进行聚合并优化列存储,并在“完成”数据时轻松查询 .
通过“敲定”,我的意思是德鲁伊假定指定间隔的数据已经存在,并且它可以安全地在它们之上进行计算 . 所以这实际上意味着不支持您更新数据(就像在数据库中一样) . 您编写的任何数据都被视为新数据,并且不断添加到其计算中 .
但德鲁伊在某种意义上是不同的,它提供了在实时索引已经发生的同一时期上传历史数据的方法 . 此批量上传将使用新的段覆盖任何段,进一步的查询将反映最新上载的批次数据 .
所以我担心唯一的选择就是批量摄取 . 也许你仍然可以将数据发送给Kafka,但是有一个spark / gobbin工作可以进行重复数据删除并写入Hadoop . 然后有一个简单的cron作业,将这些作为批量重新索引到Druid上 .