java-Apache Flink, key控两个字段字符串值相似但不相同的数据流


0

我完全绝望了!

我在java中使用apacheflink,我想知道是否可以修改keyby方法,以便通过相似性而不是确切的名称来进行 key控?

我有两个不同的数据流,我正在进行 union。在第一个流中,我要 key入的字段的名称是“johnlocke”,而在第二个数据流中,字段值是“johnl”。

我有一个算法可以在不同的字符串之间给我一个分数。我的想法是:例如,如果两个字符串之间的分数大于0'80,那么这两个字符串将被认为是相同的,当我应用keyby(“name”)时,这些相似的字符串将被 key入,因为它们具有完全相同的名称。

可视化示例:

数据流1——约翰·洛克、米奇·米克、威尔·威廉姆斯

撒塔斯特雷姆2——米奇M,约翰L,安东尼·布朗

Datastream d3=datastream1.union(datastream2)

按分数/相似性,而不是确切的名字。

我希望你能理解,

1 答案


0

我认为你的要求很难有效地实施。原因如下:

    sim(A,B)=0.9

如果元素的顺序是A、B、D、C,则必须在事件C到达时 repartition。一般来说,组可以随着每个元素的到达而改变。

您可以选择使用一个KeySelector,它进行某种类型的词干、正则化和对n


我来回答

写文章

提问题

面试题