【问题标题】:Druid.io: update/override existing data via streams from Kafka (Druid Kafka indexing service)Druid.io:通过来自 Kafka 的流更新/覆盖现有数据(Druid Kafka 索引服务)
【发布时间】:2021-08-17 23:33:08
【问题描述】:

我正在使用 Druid Kafka indexing service 从 Kafka 加载流。

但是我上传的数据总是会改变,所以我需要重新加载它,如果数据已经加载,我需要避免重复和冲突。

我在 Druid 中研究有关 Updating Existing Data 的文档。

但有关 Hadoop 批量摄取的所有信息,Lookups

是否可以在 Kafka 流期间更新现有的 Druid 数据?

换句话说,我需要使用 Kafka 索引服务(来自 Kafka 的流)用新值重写旧值。

可能有任何类型的设置来重写重复项?

【问题讨论】:

    标签: apache-kafka etl druid


    【解决方案1】:

    Druid 在某种程度上是一个时间序列数据库,其中数据被“最终确定”并在每个时间间隔写入日志。它会在“最终确定”数据时聚合并优化列以进行存储和轻松查询。

    通过“终结”,我的意思是 Druid 假设指定间隔的数据已经存在,并且可以安全地在它们之上进行计算。所以这实际上意味着不支持您更新数据(就像您在数据库中所做的那样)。您写入的任何数据都被视为新数据,并不断添加到其计算中。

    但 Druid 的不同之处在于它提供了一种上传实时索引已经发生的同一时间段的历史数据的方法。此批量上传将用新的片段覆盖任何片段,进一步的查询将反映最新上传的批次数据。

    所以恐怕唯一的选择是批量摄取。也许您仍然可以将数据发送到 Kafka,但是有一个 spark/gobbin 作业来执行重复数据删除和写入 Hadoop。然后有一个简单的 cron 作业将这些作为批处理重新索引到 Druid 上。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-30
      • 2018-12-15
      • 1970-01-01
      • 2018-02-22
      • 1970-01-01
      • 2016-12-24
      相关资源
      最近更新 更多