[SCALA] 파티션의 RDD 기본 번호를 스파크
SCALA파티션의 RDD 기본 번호를 스파크
버전 : 스파크 1.6.2 스칼라 2.10
나는 스파크 쉘에서 명령 아래 실행하고있다. 나는 스파크가 기본적으로 생성되는 파티션의 수를 확인하려합니다.
val rdd1 = sc.parallelize(1 to 10)
println(rdd1.getNumPartitions) // ==> Result is 4
//Creating rdd for the local file test1.txt. It is not HDFS.
//File content is just one word "Hello"
val rdd2 = sc.textFile("C:/test1.txt")
println(rdd2.getNumPartitions) // ==> Result is 2
아파치 스파크 문서 당으로, spark.default.parallelism 내 노트북에서 코어 수 (2 코어 프로세서 인)입니다.
내 질문은 : rdd2이 문서에 말했듯이 개 파티션의 정확한 결과를 제공 할 것으로 보인다. 그런데 왜 rdd1 4 개 파티션으로 결과를주고있다?
해결법
-
==============================
1.파티션의 최소 개수는 실제로 SparkContext 의해 하한 세트이다. 불꽃 후드 Hadoop을 사용하기 때문에, 하둡 InputFormat`은 여전히 기본적으로 동작 할 것이다.
파티션의 최소 개수는 실제로 SparkContext 의해 하한 세트이다. 불꽃 후드 Hadoop을 사용하기 때문에, 하둡 InputFormat`은 여전히 기본적으로 동작 할 것이다.
설정 및 하드웨어에 따라 다를 수있는 여기에 언급 된 바와 같이 첫 번째 경우 defaultParallelism을 반영한다. (코어의 번호 등)
그래서 당신은 첫 번째 경우는 sc.defaultParallelism에 의해 기술 된 번호로 정의 될 것이라고, 조각의 수를 제공하지 않는 한 :
scala> sc.defaultParallelism res0: Int = 6 scala> sc.parallelize(1 to 100).partitions.size res1: Int = 6
두번째 경우에 대해서는, sc.textFile와 기본적으로 슬라이스의 수는 파티션의 최소 수이다.
당신이 코드 섹션에서 볼 수있는 2와 같다.
따라서 다음 사항을 고려해야합니다 :
예:
의 일부 더미 텍스트 파일을 만들어 보자 :
fallocate -l 241m bigfile.txt fallocate -l 4G hugefile.txt
이 크기 2백41메가바이트 4GB의의 각각 2 개 파일을 생성합니다.
우리는 우리가 각 파일을 읽을 때 어떻게되는지 볼 수 있습니다 :
scala> val rdd = sc.textFile("bigfile.txt") // rdd: org.apache.spark.rdd.RDD[String] = bigfile.txt MapPartitionsRDD[1] at textFile at <console>:27 scala> rdd.getNumPartitions // res0: Int = 8 scala> val rdd2 = sc.textFile("hugefile.txt") // rdd2: org.apache.spark.rdd.RDD[String] = hugefile.txt MapPartitionsRDD[3] at textFile at <console>:27 scala> rdd2.getNumPartitions // res1: Int = 128
둘 다 실제로 HadoopRDDs 있습니다 :
scala> rdd.toDebugString // res2: String = // (8) bigfile.txt MapPartitionsRDD[1] at textFile at <console>:27 [] // | bigfile.txt HadoopRDD[0] at textFile at <console>:27 [] scala> rdd2.toDebugString // res3: String = // (128) hugefile.txt MapPartitionsRDD[3] at textFile at <console>:27 [] // | hugefile.txt HadoopRDD[2] at textFile at <console>:27 []
from https://stackoverflow.com/questions/44222307/spark-rdd-default-number-of-partitions by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] 스칼라는 케이스 (22 개) 필드를 가지고 있지만 스칼라 2.11.5에서 플레이 JSON과 문제가 발생 (0) | 2019.11.20 |
---|---|
[SCALA] Spark2.1.0 호환되지 않는 잭슨 버전 2.7.6 (0) | 2019.11.20 |
[SCALA] zipWith 스칼라 (다중 서열 이상 매핑) (0) | 2019.11.20 |
[SCALA] 서열 목록 이외의 스칼라 패턴 매칭 (0) | 2019.11.20 |
[SCALA] Joda 시간 스칼라를 사용과 클래스 깨진 오류 (0) | 2019.11.20 |