-1

데이터 프레임이 원하는 것보다 너무 많은 파티션 (700 개 이상)으로 나뉘어져있는 코드에서 버그를보고 있는데, 시도 할 때 너무 많은 셔플 작업이 발생합니다 48 개까지만 다시 분할 할 수 있습니다. 분할을 수행하기 전에 먼저 분할 할 분할 영역 수가 적기 때문에 병합()을 사용할 수 없습니다.변환 후 스파크 데이터 프레임의 파티션 수를 유지

나는 파티션 수를 줄이는 방법을 찾고있다. 필자에게 10 개의 파티션으로 분할 된 스파크 데이터 프레임 (여러 열 포함)이 있다고 가정 해 보겠습니다. 주문 중 하나를 기반으로 변환을 수행해야합니다. 이 작업이 완료되면 결과 데이터 프레임의 파티션 수가 동일합니까? 그렇지 않다면 파티션 수를 어떻게 결정합니까?

또한 repartition()과 같은 명백한 것 이외에 알고 있어야하는 데이터 프레임의 파티션 수를 변경시킬 수있는 다른 변환은 무엇입니까?

답변

0

교환이 필요한 작업의 파티션 수는 spark.sql.shuffle.partitions으로 정의됩니다. 특정 값을 원할 경우 명령을 실행하기 전에 설정해야합니다.

scala> val df = spark.range(0, 1000) 
df: org.apache.spark.sql.Dataset[Long] = [id: bigint] 

scala> spark.conf.set("spark.sql.shuffle.partitions", 1) 

scala> df.orderBy("id").rdd.getNumPartitions 
res1: Int = 1 

scala> spark.conf.set("spark.sql.shuffle.partitions", 42) 

scala> df.orderBy("id").rdd.getNumPartitions 
res3: Int = 42  
관련 문제