0

我的团队陷入了困境,并被要求在各种大型数据集上建立客户的联合搜索,这些数据集包含关于每个人的不同程度的不同数据(并且没有匹配的标识符),我想知道如何着手实施它。

我认为 Apache Nifi 非常适合查询我们的各种数据库、合并结果、通过外部工具对条目进行重复数据删除,然后将此结果推送到数据库中,然后查询该数据库以在 Elasticsearch 实例中供应用程序使用。

所以粗略地说是这样的: -

在此处输入图像描述

例如,以下数据存在于第一个流程的结果数据库中:-

<a href="https://i.stack.imgur.com/gTPx7.png" rel="nofollow noreferrer">在此处输入图像描述

然后在这个数据库表上运行https://github.com/dedupeio/dedupe,它将添加集群 ID 以帮助记录链接,例如:-

<a href="https://i.stack.imgur.com/6EukP.png" rel="nofollow noreferrer">在此处输入图像描述

然后,第二个流程将查询结果数据库并将此结果提供给 Elasticsearch 实例,以供应用程序 API 用于查询,该查询将使用集群 ID 链接重复项。

几个问题:-

  • 我将如何触发重复数据删除以在合并的内容上运行被推送到数据库?</p>

  • 必然的问题 - 第二个流程如何知道何时获取结果以推送到 Elasticsearch?定期轮询?</p>

我在这里也没有考虑任何 CDC 流程,因为数据库将不断更新,我需要处理,所以如果有人解决了类似的问题或使用了不同的方法(也很高兴考虑其他技术),我真的很感兴趣。

谢谢!

4

1 回答 1

1

对于去重...

您可能需要编写自定义处理器,或使用 ExecuteScript。由于它看起来像一个 Python 库,我猜想为 ExecuteScript 编写一个脚本,除非有 Java 库。

为了触发第二个流程...

你需要那个中间数据库表来做其他事情吗?

如果确实需要,可以将 PutDatabaseRecord 的成功关系作为输入发送到后续的 ExecuteSQL。

如果你不需要它,那么你可以去 MergeContent -> Dedupe -> ElasticSearch。

于 2018-08-17T13:26:29.733 回答