Я пытаюсь написать несколько тестовых примеров для нашей логики зажигания c, создав крошечные входные дельта-таблицы с известными значениями. Однако я замечаю, что создание одной дельта-таблицы одного элемента занимает очень много времени, около ~ 6 секунд на таблицу. Это быстро складывается, и для некоторых тестовых случаев, использующих несколько таблиц, требуется несколько минут!
Я принимаю, что тесты на искру также будут медленными, но аналогичные тесты с паркетом имеют скорость создания около 400 мс, что быть терпимым
Я выполняю эти тесты на Windows, что может способствовать моим проблемам, но другие форматы работают нормально и на порядок быстрее
Тестовый пример используется для генерации моего времени:
"delta" should "create in a reasonable time" in {
val spark: SparkSession = SparkSession.builder
.master("local[1]")
.getOrCreate()
import spark.implicits._
// This takes ~15seconds but most of that can be attributed to spark warming up
val preloadStart = System.currentTimeMillis()
Seq(("test-1", "my-test"))
.toDF("Id", "Source")
.write
.format("delta")
.save(s"c:/tmp/test-${java.util.UUID.randomUUID()}")
val preloadEnd = System.currentTimeMillis()
println("Preload Elapsed time: " + (preloadEnd - preloadStart) + "ms")
//actual test, why does this take ~6seconds?!?
val testStart = System.currentTimeMillis()
Seq(("test-2", "my-test"))
.toDF("Id", "Source")
.write
.format("delta")
.save(s"c:/tmp/test-${java.util.UUID.randomUUID()}")
val testEnd = System.currentTimeMillis()
println("Test Elapsed time: " + (testEnd - testStart) + "ms")
}
Есть ли какие-либо значения конфигурации, которые я пропускаю или как-то иначе, чтобы ускорить создание дельта-таблицы?