2016-08-01 6 views
2

그래서,이 stackoverflow 게시물을 기반으로 셔플 링을 일으키는 Spark 연산을 테스트하려고 시도했습니다 : LINK. 그러나 cartesian 작업이 스파크에서 셔플 링을 일으키지 않을 때 나에게 의미가있는 것은 아닙니다. 왜냐하면 로컬에서 파티션을 공유하기 위해 네트워크를 통해 파티션을 이동해야하기 때문입니다.스파크 데카르트는 셔플을 발생시키지 않습니까?

Spark는 실제로 장면 뒤에서 cartesiandistinct 작업을 수행합니까?

답변

2

셔플 키 - 값 쌍 RDDs (통상적 PairRDDs 또는 PairwiseRDDs로서 설명 RDD[(T, U)])에 특이적이고 다소 동등한 하둡 위상 셔플하는 동작이다. 셔플의 목표는 키 값과 Partitioner을 기반으로 특정 실행 프로그램으로 데이터를 이동하는 것입니다.

Spark에는 네트워크 트래픽이 필요하지만 shuffle과 동일한 유형의 로직을 사용하지 않으며 항상 키 - 값 쌍이 필요한 것은 아닙니다. 데카르트 생성물은 이러한 연산 중 하나입니다. 실제로는 기계간에 데이터를 이동하지만 (실제로는 훨씬 비싼 데이터 이동을 유발 함) 키와 실행 프로그램 간의 관계를 설정하지는 않습니다.

+0

그래서 어떤 작업이 Spark에서 네트워크 트래픽을 필요로하는지 어떻게 알 수 있습니까? 언급했듯이 '데카르트'는 실제로 데이터 이동을 기반으로 한 비싼 작업입니다. 그러므로 우리가 피해야 할 다른 행동이 무엇인지 알고있는 것이 좋습니다. – Tim

+1

연산이'mapPartitions'만으로 표현된다면 ('map','filter' 등) 데이터 이동이 필요 없습니다. 그렇지 않으면 아마 다른 방법으로 데이터를 이동합니다. – zero323

+1

더 많은 정보 official spark docs http://spark.apache.org/docs/latest/programming-guide.html#shuffle-operations – DanielVL