2014-10-14 6 views
16

Apache Spark에서 파티셔닝이 어떻게 이루어지는 지 이해하려고합니다. 너희들이 도와 줄 수 있니?Spark에서 어떻게 파티션이 작동합니까?

  • 마스터와 1 심 각
  • 파일

크기에서 count.txt 10 MB 두 개의 노드가 얼마나 많은 파티션을 만들고 다음을 수행 여기

는 시나리오?

rdd = sc.textFile(count.txt) 

파일 크기가 파티션 수에 영향을 줍니까?

+0

왜 수락/댓글없이 답을 남겼습니까? – gsamaras

답변

21

기본적으로 파티션은 각 HDFS 파티션에 대해 생성되며 기본적으로 64MB (Spark Programming Guide)입니다.

스파크가 생성하는 최소 파티션 수를 무시하는 다른 매개 변수 defaultMinPartitions을 전달할 수 있습니다. 이 값을 덮어 쓰지 않으면 스파크는 최소한 spark.default.parallelism만큼의 파티션을 생성합니다.

spark.default.parallelism은 클러스터에있는 모든 시스템의 코어 수이기 때문에 최소한 3 개의 파티션이 작성되어 있다고 생각합니다.

또한 repartition 또는 coalesce RDD는 차례대로 사용 가능한 병렬 처리의 총량에 영향을주는 파티션 수를 변경할 수 있습니다.

+2

@jacek'default.parallelism' (3 개의 파티션 생성) 및 10MB (HDFS의 단일 블록) 인 데이터 파일의 경우, Spark 파티션에 얼마나 많은 데이터가 포함됩니까? 윌 : ** 1. 3 등분 (각 3.3MB)으로 나누어 집행자에게 보냄 ** _2. 분할되지 않았고 (P1 = 10MB, P2 = P3 = 0MB) 데이터 위치 때문에 동일한 노드에서 실행되었습니다. _ ** 3. 모든 3 개의 파티션에서 임의의 데이터 셔플 ** ** –

+1

@mrmcgrep, 첫 번째 진술에 기본적으로 각 HDFS 블록에 대한 파티션이 생성되고 3 번째 성명에서 혼란이 있습니다. 'defaultMinPartitions'를 오버라이드 (override)하면 (자), 적어도 spark.default.parallelism와 같은 파티션이 작성됩니다.이 파티션은, 클러스터의 코어 수라고 생각됩니다. 그러면'파티션 = HDFS 파티션 '또는'코어 수 ='가 생성됩니까? – Explorer

+0

@LiveAndLetLive 저는 이것이 모두 최소값이라고 생각합니다. 최소한 세 개의 값 중 가장 작은 수만큼의 파티션이 있어야합니다. – mrmcgreg

관련 문제