2 개의 입력이 있습니다. 첫 번째 입력은 스트림 (입력 1)이고 두 번째 입력은 배치 (예 : input2)입니다. 첫 번째 입력의 키가 두 번째 입력의 단일 행 또는 두 개 이상의 행과 일치하는지 파악하고 싶습니다. 상기 추가 변환/로직 로우 일치 또는 복수의 열이 일치 단일 여부 지금까지DStream이 비어 있는지 알아내는 방법
val input1Pair = streamData.map(x => (x._1, x))
val input2Pair = input2.map(x => (x._1, x))
val joinData = input1Pair.transform{ x => input2Pair.leftOuterJoin(x)}
val result = joinData.mapValues{
case(v, Some(a)) => 1L
case(v, None) => 0
}.reduceByKey(_ + _).filter(_._2 > 1)
시도
if(single row matches){
// do something
}else{
// do something
}
코드 (이어야 하나의 첫 번째 입력 키에 대한) 일치하는 행의 수에 의존
위 코드를 작성했습니다. result.print를 수행하면 모든 키가 input2의 한 행과 만 일치하면 아무 것도 인쇄되지 않습니다. DStream에 여러 RDD가있을 수 있으므로 DStream이 비어 있는지 여부를 파악할 방법이 확실하지 않습니다. 이것이 가능하다면 if check를 할 수 있습니다.
주셔서 감사합니다 응답을 많이 아마도 가장 쉬운 방법은 두 컬렉션을 교차 및 교차 크기를 확인하는 것입니다. 필자의 경우 input1 RDD 타입은 input2 RDD 타입과 다릅니다. 마지막으로 코 그룹을 사용하여 구현되었습니다. – Dazzler