DataFrame의 현재 파티션 수 가져 오기
DataFrame의 현재 파티션 수를 얻는 방법이 있습니까? DataFrame javadoc (spark 1.6)을 확인했지만 그 방법을 찾지 못했거나 놓쳤습니까? (JavaRDD의 경우 getNumPartitions () 메소드가 있습니다.)
getNumPartitions()
DataFrame의 기본 RDD 를 호출해야합니다 ( 예 : df.rdd.getNumPartitions()
. Scala의 경우 매개 변수가없는 메서드 : df.rdd.getNumPartitions
.
dataframe.rdd.partitions.size
df.rdd.getNumPartitions()
또는 와는 다른 대안 df.rdd.length
입니다.
전체 예를 들어 설명하겠습니다 ...
val x = (1 to 10).toList
val numberDF = x.toDF(“number”)
numberDF.rdd.partitions.size // => 4
위에서 얻은 파티션 수를 증명하려면 데이터 프레임을 csv로 저장하십시오.
numberDF.write.csv(“/Users/Ram.Ghadiyaram/output/numbers”)
다음은 데이터가 다른 파티션에서 분리되는 방법입니다.
Partition 00000: 1, 2
Partition 00001: 3, 4, 5
Partition 00002: 6, 7
Partition 00003: 8, 9, 10
업데이트 :
@Hemanth가 댓글에 좋은 질문을했습니다 ... 기본적으로 위의 경우 파티션 수가 4 인 이유
짧은 답변 : 실행중인 경우에 따라 다릅니다. local [4]를 사용했기 때문에 4 개의 파티션이 생겼습니다.
긴 대답 :
나는 내 로컬 컴퓨터에서 위의 프로그램을 실행하고 있었으며 4 개의 파티션 을 취하고 있다는 것을 기반으로 master를 local [4]로 사용했습니다 .
val spark = SparkSession.builder()
.appName(this.getClass.getName)
.config("spark.master", "local[4]").getOrCreate()
마스터 원사에 스파크 쉘이 있으면 파티션 수를 2로 얻었습니다.
예 : spark-shell --master yarn
동일한 명령을 다시 입력했습니다.
scala> val x = (1 to 10).toList
x: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
scala> val numberDF = x.toDF("number")
numberDF: org.apache.spark.sql.DataFrame = [number: int]
scala> numberDF.rdd.partitions.size
res0: Int = 2
- 여기서 2는 spark의 기본 병렬 처리입니다.
- hashpartitioner를 기반으로 스파크는 배포 할 파티션 수를 결정합니다. 당신이 실행하는 경우
--master local
당신에 따라Runtime.getRuntime.availableProcessors()
즉,local[Runtime.getRuntime.availableProcessors()]
이 파티션의 그 수를 할당하려고합니다. 사용 가능한 프로세서 수가 12 개인 경우 (예 :local[Runtime.getRuntime.availableProcessors()])
1 ~ 10 개의 목록이있는 경우 10 개의 파티션 만 생성됩니다.
노트:
내가 스파크 프로그램을 실행하고 있고 기본적으로 파티션 / 작업의 수는 사용 가능한 모든 코어의 수인 12 코어 랩톱을 사용하는 경우, 즉 12 개입니다. 즉,
local[*]
또는s"local[${Runtime.getRuntime.availableProcessors()}]")
이 경우에는 10 개의 숫자 만 있으므로 제한됩니다. ~ 10
이 모든 사항을 염두에두고 직접 시도해보십시오.
RDD로 변환 한 다음 파티션 길이를 얻습니다.
DF.rdd.partitions.length
val df = Seq(
("A", 1), ("B", 2), ("A", 3), ("C", 1)
).toDF("k", "v")
df.rdd.getNumPartitions
참조 URL : https://stackoverflow.com/questions/42171499/get-current-number-of-partitions-of-a-dataframe
'developer tip' 카테고리의 다른 글
git에서 빈 프로젝트에 분기 만들기 (0) | 2021.01.07 |
---|---|
CoffeScript에서 두 개의 익명 함수를 인수로 전달하는 방법은 무엇입니까? (0) | 2021.01.07 |
ASCII 아트 이미지 변환 알고리즘은 어떻게 작동합니까? (0) | 2021.01.06 |
WPF의 바인딩 된 컨트롤에 대한 강제 유효성 검사 (0) | 2021.01.06 |
PHP를 사용하여 날짜를 ISO 8601 형식으로 표시하는 방법 (0) | 2021.01.06 |