Comments 1
MaxRokatansky в нашем проекте нашел места преобразования dataframe в rdd:
Переписал, используя функции spark sql:
и измерил время выполнения на 10 000 строк в датафрейме. Эксперимент показал, что время почти одинаковое, а иногда преобразование в rdd выигрывает.
Методика измерений:
С преобразованием ~1350ms, без преобразования ~1750ms.
val sysUUIDs = newDF1.select("sha1")
.rdd
.map(r => r(0).asInstanceOf[String])
.collect()
.map(s => "'" + s + "'")
.mkString(", ")
Переписал, используя функции spark sql:
val sysUUIDs = newDF1
.agg(concat_ws(",", collect_list(concat(lit("'"), col("sha1"), lit("'")))))
.first().mkString
и измерил время выполнения на 10 000 строк в датафрейме. Эксперимент показал, что время почти одинаковое, а иногда преобразование в rdd выигрывает.
Методика измерений:
val newDF = Seq.fill(10000)(Random.nextInt)
.toDF("value")
.withColumn("sha1", sha1(col("value").cast("string")))
val s1 = System.nanoTime
......Измеряемый код
println("time: "+(System.nanoTime-s1)/1e6+"ms")
С преобразованием ~1350ms, без преобразования ~1750ms.
Sign up to leave a comment.
Секреты производительности Spark, или Почему важна компиляция запросов