Когда я пытаюсь понять разницу между coalesce () и repartition (), я понял, что coalesce может только уменьшить количество разделов в dataframe, и если мы попытаемся увеличить количество разделов, то ни один из разделов не останется неизменным.В соответствии с https://stackoverflow.com/a/45854701/1784552 coalesce используется только для уменьшения количества разделов.
Но когда я попытался выполнить приведенный ниже код, я заметил две вещи
- Для Dataframe сcoalesce количество разделов может быть увеличено
- Для Rdd, если shuffle = false, тогда количество разделов не может быть увеличено с coalesce.
Означает ли это, что с coalesce dataframe разделы могут быть увеличены?
val h1b1Df = spark.read.csv("/FileStore/tables/h1b_data.csv")
println("Original dataframe partitions = "+h1b1Df.rdd.getNumPartitions)
val cloasedDf = h1b1Df.coalesce(2)
println("Coalesced dataframe partitions = "+cloasedDf.rdd.getNumPartitions
val cloasedDf1 = cloasedDf.coalesce(6)
println("Coalesced dataframe with increased partitions = "+cloasedDf1.rdd.getNumPartitions)
// out out is
Исходные разделы информационного кадра = 8
Объединенные разделы информационного кадра = 2
Объединенный информационный кадр с увеличенными разделами = 6
val inpRdd = h1b1Df.rdd
println("Original rdd partitions = "+inpRdd.getNumPartitions)
val colasedRdd = inpRdd.coalesce(4)
println("Coalesced rdd partitions = "+colasedRdd.getNumPartitions)
val colasedRdd1 = colasedRdd.coalesce(6,false)
println("Coalesced rdd with increased partitions = "+colasedRdd1.getNumPartitions)
// Вывод
Исходные разделы rdd = 8
Объединенные разделы rdd = 4
Объединенные rdd с увеличенными разделами = 4