Spark 에서 reduceByKey ( +) 의 설명

1946 단어 빅 데이터
예 를 들 어 내 메모리 에는 다음 과 같은 key - value 형식의 데이터 세트 (RDD) 가 존재 합 니 다.
hello:1   sparkSubmit:1   red:1   sparkSubmit:1    hello:2    hello:1    hello:4    red:1   red:1   red:1 ... ...
reduceByKey 의 역할 대상 은 (key, value) 형식의 RDD 이 고 reduce 는 감소, 압축 의 의 미 를 가진다. reduceByKey 의 역할 은 같은 key 의 데 이 터 를 처리 하 는 것 이 고 최종 적 으로 모든 key 는 하나의 기록 만 을 보존 하 는 것 이다.
하나의 기록 을 보존 하 는 데 는 통상 두 가지 결과 가 있다.하 나 는 키 가 나타 나 는 횟수 와 같은 우리 가 원 하 는 정보 만 보존 하 는 것 이다.두 번 째 는 value 를 한데 모 아 목록 을 만 드 는 것 입 니 다. 그러면 나중에 value 에 대해 진일보 한 조작 을 할 수 있 습 니 다.
위의 데이터 세트 를 예 로 들 면 spark 에서 예 를 들 면 word: RDD [(String, Int)]  두 필드 는 각각 워드, 한 단어 가 서로 다른 파일 에 나타 난 횟수 입 니 다. 현재 우 리 는 모든 단어 가 나타 난 총 횟수 를 통계 해 야 합 니 다.
우 리 는 이렇게 쓸 수 있다.
val word = rdd1.reduceByKey((x,y) => x+y)

상술 한 서법 을 간소화 하 다.
val word= rdd1.reduceByKey(_+_)

reduceByKey
reduceByKey 는 같은 key 의 데 이 터 를 찾 습 니 다. 이러한 두 기록 을 찾 을 때 value (각각 x, y 로 기록) 를 처리 합 니 다. 즉, 구 와 후의 데이터 만 value 로 유지 합 니 다.키 마다 기록 만 남 을 때 까지 이 동작 을 반복 합 니 다.
만약 에 간 화 된 서법 이 이해 하기 어렵다 고 생각한다 면 먼저 간 화 된 서법 을 보지 않 고 이렇게 이해 합 니 다. 위의 데이터 세트 를 예 로 들 면 왼쪽 에서 오른쪽 까지 첫 번 째 hello 라 는 key 에 대응 하 는 값 은 1 입 니 다. 이 1 은 서법 전의 x 를 간소화 하지 않 고 왼쪽 에서 오른쪽 까지 다섯 번 째 가 hello 입 니 다. 그러면 두 번 째 로 찾 은 helloKey 에 대응 하 는 value 는 2 입 니 다.이 2 는 바로 서법 을 간소화 하지 않 기 전의 y 이다.그리고 reduceByKey 는 현재 찾 은 이 두 개의 똑 같은 key 의 value 에 대해 덧셈 을 한 다음 에 새로운 key - value 를 얻 습 니 다. 이 새로운 key - value 의 key 는 hello 이 고 value 는 추 가 된 결과 3 입 니 다. 그리고 세 번 째 key 는 hello 라 는 단 어 를 계속 찾 습 니 다. 찾 은 후에 방금 추 가 된 새로운 hello: 3 과 계속 추 가 됩 니 다.이때 당신 은 이전에 추 가 된 3 을 x 로 하고, 찾 은 세 번 째 key 를 hello 라 는 단어 에 대응 하 는 value 를 y 로 한 다음 에 계속 추가 하고, 두 번 째 새로운 key - vlue 를 얻 을 수 있 습 니 다. 이 두 번 째 새로운 key - vlue 의 key 는 hello 이 고, value 는 4 입 니 다. 그리고 이 두 번 째 새로운 vlue 4 는 x 로 한 다음 에 다른 똑 같은 key 를 계속 찾 아서 이 를 유추 할 수 있 습 니 다.
이후 의 서법 을 간소화 하 는 첫 번 째밑줄 치면 x, 두 번 째밑줄 은 y 를 대표 한다.그리고 원 리 는 위 에 써 있 는 거 예요.
 

좋은 웹페이지 즐겨찾기