2016-06-08 2 views
0

전적으로 필사적입니다!Apache Flink, 필드 문자열 값은 비슷하지만 같지 않은 키 두 개의 데이터 스트림

나는 자바와 함께 아파치 플린크를 사용하고 있는데, 유사성에 의한 키와 정확한 이름에 의한 키잉 방법을 수정하는 것이 가능한지 알고 싶습니다.

두 개의 서로 다른 DataStream이 있으며 유니언을 수행하고 있습니다. 첫 번째 스트림에서 KeyBy에 입력하려는 필드의 이름은 "John Locke"이고 두 번째 Datastream에서는 필드 값이 "John L"입니다.

다른 문자열 사이에 점수를주는 알고리즘이 있습니다. 내 생각은 : 두 문자열 사이의 점수가 예를 들어 0'80보다 높으면 두 문자열이 동일하게 간주되며 keyby ("name")를 적용하면 정확한 문자열을 키잉합니다. 같은 이름.

시각 예 :

datastream1 ----- 존 로크, 미키 Micke, 윌 윌리엄스

satastream2 ----- 미키 M., 존 L., 앤서니 브라운

데이터 스트림 d3 = 데이터 스트림 1. 데이터 스트림 2 (0120)

감사합니다. 감사합니다!

+0

키입니다. 어쩌면 당신은 그것을위한 커스텀 솔루션을 구축 할 수 있을지 모르겠지만, 어떻게해야할지 모르겠군요. 당신이 노조와 키를 한 후에, 당신의 기록을 처리하기위한 다음 단계는 무엇일까요? –

+0

예, 그 후에 기록을 처리하고 싶습니다. 그것은 단지 예일뿐입니다 –

+0

물론입니다. 그러나 구체적으로 무엇을하고 싶습니까? –

답변

0

저는 귀하의 요구 사항을 효율적으로 구현하기가 어렵다고 생각합니다. 그 이유는 다음과 같은 경우이다

  • SIM (A, B) = 0.9
  • SIM (A, D) = SIM (B, D) = 0.7
  • SIM (A, C) = 0.9 요소의 순서는 일반적으로 이벤트 C.의 도착 재분할 있고, A, B, D, C의 경우
  • SIM (C, D)가 0.9

를 = 그룹을 변경할 수 도착하는 모든 요소가 포함되어 있습니다.

은 당신이 양자 택일 할 수있는 것은 형태소 분석, 정규화의 일종을하는 KeySelector에를 사용하고이 지원되지 않습니다 N

+0

다른 사람들도 KeySelector를 사용하도록 권했지만 실제로 가이드를 볼 때 작동 원리를 이해합니다. –

관련 문제