Spark 에서 reduceByKey ( +) 의 설명
1946 단어 빅 데이터
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 를 대표 한다.그리고 원 리 는 위 에 써 있 는 거 예요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
spark 의 2: 원리 소개Google Map/Reduce 를 바탕 으로 이 루어 진 Hadoop 은 개발 자 에 게 map, reduce 원 어 를 제공 하여 병렬 일괄 처리 프로그램 을 매우 간단 하고 아름 답 게 만 들 었 습 니 다.S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.