익명 사용자
로그인하지 않음
토론
기여
계정 만들기
로그인
IT 위키
검색
아파치 스파크 foldByKey
편집하기
IT 위키
이름공간
문서
토론
더 보기
더 보기
문서 행위
읽기
편집
원본 편집
역사
경고:
로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다.
로그인
하거나
계정을 생성하면
편집자가 사용자 이름으로 기록되고, 다른 장점도 있습니다.
스팸 방지 검사입니다. 이것을 입력하지
마세요
!
'''아파치 스파크 foldByKey'''(Apache Spark foldByKey)는 RDD에서 키별로 값을 집계하는 연산이다. 이 연산은 주로 키-값 쌍으로 이루어진 RDD에서 각 키에 대한 값을 누적하는 데 사용된다. foldByKey는 키별로 값을 "접기(folding)" 작업을 하여, 병렬 환경에서 데이터를 효율적으로 처리할 수 있게 해준다. ==개요== foldByKey는 두 개의 인수를 사용하여 RDD의 각 키에 대해 값을 병합하는 연산이다. 이 연산은 RDD의 각 파티션에서 로컬로 값을 접고, 전체 클러스터에서 전역적으로 값이 병합된다. *'''첫 번째 인수'''는 파티션 내에서 병합하는 데 사용되는 연산자(예: 덧셈, 곱셈 등)이다. *'''두 번째 인수'''는 각 키에 대해 병합을 시작하는 초기값이다. foldByKey는 기본적으로 '''reduceByKey'''와 유사하지만, 초기값을 제공하는 점에서 차이가 있다. 이로 인해 병합 작업을 수행하기 전에 각 키에 대해 시작값을 설정할 수 있다. ==사용법== foldByKey는 RDD에서 키별로 값을 집계할 때 매우 유용하다. 주로 `pair RDD`에서 사용되며, 키-값 쌍을 기준으로 연산을 수행한다.<syntaxhighlight lang="python"> from pyspark import SparkContext sc = SparkContext("local", "FoldByKey Example") # 키-값 쌍으로 구성된 RDD rdd = sc.parallelize([("a", 1), ("b", 2), ("a", 3), ("b", 4)]) # foldByKey 적용: 첫 번째 인수는 덧셈 연산, 두 번째 인수는 초기값 0 result = rdd.foldByKey(0, lambda x, y: x + y) print(result.collect()) </syntaxhighlight>위 코드에서 foldByKey는 `("a", 1)`, `("a", 3)`을 합쳐 `"a"` 키에 대해 4를, `("b", 2)`와 `("b", 4)`를 합쳐 `"b"` 키에 대해 6을 결과로 반환한다. ==foldByKey와 reduceByKey의 차이점== '''reduceByKey'''와 '''foldByKey'''는 유사하지만 중요한 차이가 있다: *reduceByKey: 키별로 값을 병합할 때 초기값을 설정할 수 없다. 즉, 각 키에 대해 값을 병합할 때는 첫 번째 값이 자동으로 사용된다. *foldByKey: 키별로 값을 병합할 때 초기값을 설정할 수 있다. 병합 작업을 시작할 때 각 키에 대해 특정 초기값을 제공할 수 있어 더 유연하다. ==응용== foldByKey는 다음과 같은 다양한 상황에서 유용하게 사용된다: *'''데이터 집계''' **키별로 데이터를 집계하고, 초기값을 지정하여 합계, 평균 등의 계산을 수행할 수 있다. *'''통계 처리''' **각 키에 대한 값의 합계를 구하거나, 복잡한 통계적 계산을 수행할 때 사용될 수 있다. *'''분산 환경에서의 집계''' **클러스터 환경에서 데이터를 분산 처리하며, 키별로 값을 효율적으로 집계할 수 있다. ==예제 1: 숫자의 합계 구하기== 다음은 foldByKey를 사용하여 키별로 숫자의 합계를 구하는 예시이다:<syntaxhighlight lang="python"> rdd = sc.parallelize([("a", 1), ("a", 2), ("b", 3), ("b", 4)]) # foldByKey로 값의 합계를 구한다. 초기값은 0 result = rdd.foldByKey(0, lambda x, y: x + y) print(result.collect()) # 출력: [('a', 3), ('b', 7)] </syntaxhighlight>이 예제에서는 `"a"`와 `"b"`에 대해 각 키에 해당하는 값들의 합계를 구했다. ==예제 2: 문자열 연결하기== foldByKey는 숫자뿐만 아니라 문자열에도 적용할 수 있다. 아래는 각 키에 대해 문자열을 연결하는 예제이다:<syntaxhighlight lang="python"> rdd = sc.parallelize([("a", "hello"), ("b", "world"), ("a", "spark"), ("b", "apache")]) # foldByKey로 문자열을 연결한다. 초기값은 빈 문자열 result = rdd.foldByKey("", lambda x, y: x + " " + y) print(result.collect()) # 출력: [('a', 'hello spark'), ('b', 'world apache')] </syntaxhighlight>위 예제에서는 각 키에 대해 문자열을 연결하였다. ==같이 보기== *[[아파치 스파크]] *[[RDD(Resilient Distributed Dataset)]] *[[reduceByKey]] *[[mapByKey]] *[[스파크 데이터 프레임]] ==참고 문헌== *Zaharia, Matei, et al. "Spark: Cluster Computing with Working Sets." USENIX, 2010. *Chambers, Bill, and Zaharia, Matei. "Spark: The Definitive Guide." O'Reilly Media, 2018. [[분류:아파치 스파크]] [[분류:분산 컴퓨팅]]
요약:
IT 위키에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 라이선스로 배포된다는 점을 유의해 주세요(자세한 내용에 대해서는
IT 위키:저작권
문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다.
저작권이 있는 내용을 허가 없이 저장하지 마세요!
취소
편집 도움말
(새 창에서 열림)
둘러보기
둘러보기
대문
최근 바뀜
광고
위키 도구
위키 도구
특수 문서 목록
문서 도구
문서 도구
사용자 문서 도구
더 보기
여기를 가리키는 문서
가리키는 글의 최근 바뀜
문서 정보
문서 기록