首页 文章

Apache Flink,关键的两个数据流,具有相似的字段字符串值但不相同

提问于
浏览
0

我完全绝望了!

我正在使用apache flink与java,我想知道是否有可能修改keyby方法,以便通过相似性而不是确切的名称来键入?

我有两个不同的DataStreams,我正在做一个联合 . 在第一个流中,我想要KeyBy的字段的名称是“John Locke”,而在第二个Datastream中,字段值是“John L” .

我有一个算法,给我一些不同的字符串之间的分数 . 我的想法是:如果两个字符串之间的分数例如高于0'80,那么这两个字符串将被认为是相同的,当我应用keyby(“name”)时,那些相似的字符串将被键入,因为它们具有确切的一样的名字 .

视觉示例:

datastream1 ----- John Locke,Mickey Micke,Will Williams

satastream2 ----- Mickey M.,John L.,Anthony Brown

Datastream d3 = datastream1.union(datastream2)

d3.keyby得分/ similatiry,而不是确切的名字 .

我希望你理解,谢谢!

1 回答

  • 0

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

    • sim(A,B)= 0.9

    • sim(A,D)= sim(B,D)= 0.7

    • sim(A,C)= 0.9

    • sim(C,D)= 0.9

    如果元素的顺序是A,B,D,C,则必须在事件C到达时重新分区 . 通常,组可以随着到达的每个元素而改变 .

    你可以做的另一种方法是使用KeySelector,它可以进行某种词干化,正则化和键入n

相关问题