Apache Spark combineByKey 설명



이 Spark Hadoop 블로그는 Apache Spark combineByKey에 대해 알아야 할 모든 것을 알려줍니다. CombineByKey 방법을 사용하여 학생당 평균 점수를 찾습니다.

Prithviraj Bose 제공

Spark는 빠른 계산과 전문가에 대한 수요를 위해 설계된 초고속 클러스터 컴퓨팅 프레임 워크입니다. 오늘날 시장에서 상당합니다.다음은 Spark의 강력한 API입니다. CombineByKey .





API 규모 : org.apache.spark.PairRDDFunctions.combineByKey .

Python API : pyspark.RDD.combineByKey .



API는 세 가지 기능을 사용합니다. 람다 식파이썬 또는 익명 기능사다리 ), 즉

  1. 결합기 함수 생성 : x
  2. 값 병합 기능 : y
  3. 결합기 병합 기능 : z

API 형식은 combineByKey (x, y, z) .

예제 (Scala)를 보겠습니다. 전체 Scala 소스를 찾을 수 있습니다. 여기 .



우리의 목표는 학생당 평균 점수를 찾는 것입니다.

다음은 자리 표시 자 클래스입니다. ScoreDetail 과목 점수와 함께 학생 이름을 저장합니다.

Scoredetail-spark-combinebykey

일부 테스트 데이터가 생성되고 키 쌍 값으로 변환됩니다. 키 = 학생 이름값 = ScoreDetail 예.

그런 다음 아래 코드 조각과 같이 쌍 RDD를 만듭니다. 실험을 위해 크기 3의 해시 파티 셔 너를 만들었으므로 세 파티션에는 각각 2, 2 및 4 개의 키 값 쌍이 포함됩니다. 이것은 각 파티션을 탐색하는 섹션에서 강조 표시됩니다.

해시 맵 구현 방법

이제 각 파티션을 탐색 할 수 있습니다. 첫 번째 줄은 각 파티션의 길이 (파티션 당 키 값 쌍 수)를 인쇄하고 두 번째 줄은 각 파티션의 내용을 인쇄합니다.

그리고 다음은 파티션에서 점수를 결합한 후 학생당 평균 점수를 계산하는 피날레 운동입니다.

위의 코드 흐름은 다음과 같습니다.
먼저 각 파티션에서 만나는 모든 키에 대해 본질적으로 튜플 = (값, 1) 인 결합기 함수를 만들어야합니다. 이 단계 후 파티션의 모든 (키, 값)에 대한 출력은 (키, (값, 1))입니다.

그런 다음 다음 반복에서 파티션 당 결합기 기능이 모든 키에 대해 값 병합 기능을 사용하여 병합됩니다. 이 단계 후 모든 (key, (value, 1))의 출력은 모든 파티션에서 (key, (total, count))입니다.

마지막으로 병합 결합기 기능은 실행기의 파티션에있는 모든 값을 병합하고 데이터를 다시 드라이버로 보냅니다. 이 단계 후 파티션 당 모든 (key, (total, count))의 출력은 다음과 같습니다.
(키, (totalAcrossAllPartitions, countAcrossAllPartitions)).

지도는
(키, 튜플) = (키, (totalAcrossAllPartitions, countAcrossAllPartitions))
키당 평균을 (key, tuple._1 / tuple._2)로 계산합니다.

마지막 줄은 운전 기사쪽에있는 모든 학생의 평균 점수를 인쇄합니다.

질문이 있으십니까? 댓글 섹션에서 언급하시면 다시 연락 드리겠습니다.

관련 게시물:

Spark에서 파티셔닝 이해하기