Pull to refresh

Comments 1

MaxRokatansky в нашем проекте нашел места преобразования dataframe в rdd:
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.