测试火花增量表的创建非常缓慢

时间:2020-03-14 14:53:15

标签: apache-spark delta-lake

我试图通过创建具有已知值的微小输入增量表来为我们的火花逻辑编写一些测试用例。但是,我注意到创建单个项目增量表需要很长时间,每个表大约需要6秒。这很快就累加了,使用多个表的一些测试用例要花几分钟才能运行!

我接受火花测试也很慢,但是镶木地板的类似测试的创建速度约为400ms,这是可以接受的

我正在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")
  }

是否缺少配置值或以其他方式加快增量表的创建?

1 个答案:

答案 0 :(得分:0)

Spark的默认配置不适用于通常在单元测试中发生的小任务。以下是the configurations Delta Lake在单元测试中使用的情况:

Invoke-Command

您还可以应用相同的配置集来加快测试速度。

相关问题