-1

Je regarde un bogue dans le code où une image a été divisée en trop de partitions que désiré (plus de 700), et cela provoque trop d'opérations de mélange quand j'essaie pour les repartitionner à seulement 48. Je ne peux pas utiliser un coalesce() ici parce que je veux avoir moins de partitions en premier lieu avant de faire une repartition.Préserver le nombre de partitions d'une structure d'étincelles après transformation

Je cherche des moyens de réduire le nombre de partitions. Disons que j'ai un dataframe spark (avec plusieurs colonnes) divisé en 10 partitions. J'ai besoin de faire une commande par transformation basée sur l'une des colonnes. Après que cette opération soit terminée, la trame de données résultante aura-t-elle le même nombre de partitions? Si non, comment étincelle décider sur le nombre de partitions?

Quelles sont également les autres transformations qui pourraient provoquer une modification du nombre de partitions pour une structure de données, dont j'ai besoin de connaître, autres que les plus évidentes comme repartition()?

Répondre

0

Le nombre de partitions pour les opérations nécessitant un échange est défini par spark.sql.shuffle.partitions. Si vous voulez une valeur particulière, vous devez la définir avant d'exécuter la commande:

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