복붙노트

[HADOOP] 왜 미리 파티션 때문에 셔플을 줄이는 스파크 작업을 혜택?

HADOOP

왜 미리 파티션 때문에 셔플을 줄이는 스파크 작업을 혜택?

많은 자습서 RDD의 사전 파티션 스파크 작업의 데이터 셔플을 최적화 할 것이라고 언급. 내가 혼란 스러워요 것은 나의 이해 사전 파티션도 셔플로 이어질 것, 즉 사전에 셔플 왜 여기에 몇 가지 작업을 혜택? 특히 자체 변환 세트의 최적화를 할 것을 촉발.

예를 들면 :

나는 두 개의 데이터 세트 국가 (ID, 국가)과 소득에 가입하려면 (ID를 (소득, 월, 년)), 작동이 두 종류의 차이점은 무엇인가? (나는 PySpark 스키마를 사용)

나는 단지이 한 번 가입 계산해야하는 경우 이전에 가입 사전 파티션을 사용하는 것이 유용 아직? 나는 partitionBy도 바로 셔플 필요 생각? 그리고 만약 내 더 계산 한 후, 키 (쓸모가있을 것입니다 RDD에서 제거 될 조인에 사용되는 이전 키 ID)로 국가를 사용하여 모든 기본이 조인 내가 계산을 최적화하기 위해 무엇을해야합니까?

해결법

  1. ==============================

    1.당신은 완벽하게 맞아. 선점 파티션 분할 다중 데이터 경로 DAG 재사용 될 경우에만 의미. 만 가입하면 그냥 다른 위치에 섞어 한 번.

    당신은 완벽하게 맞아. 선점 파티션 분할 다중 데이터 경로 DAG 재사용 될 경우에만 의미. 만 가입하면 그냥 다른 위치에 섞어 한 번.

  2. ==============================

    2.그건 당신이 묻는 거라면 parititionBy는 데이터 셔플하지 않습니다.

    그건 당신이 묻는 거라면 parititionBy는 데이터 셔플하지 않습니다.

    partitionBy을 적용하여 선제 당신은 셔플을 피하지 않는다. 당신은 다른 장소에 밀어 넣습니다. 이 분할 RDD 여러 번 재사용하면 좋은 생각이 될 수 있지만, 조인 일회성에 대해 아무것도 얻을 수 없다.

  3. from https://stackoverflow.com/questions/45604297/why-pre-partition-will-benefit-spark-job-because-of-reducing-shuffling by cc-by-sa and MIT license