SQLServerException:数据工厂中的数据块 activity 导致连接关闭

SQLServerException: The connection is closed caused by databricks activity in Data Factory

我有一个 Azure 数据工厂管道,它并行启动 4 个 Databricks 活动。

这 4 个活动做几乎相同的事情: 在同一个数据库中的 4 个不同的 SQL 服务器表中写入不同的数据

   val df= spark.sql("SELECT * FROM TAB1")
   df
      .write
      .format("com.microsoft.sqlserver.jdbc.spark")
      .mode("overwrite")
      .option("truncate", value = true)
      .option("reliabilityLevel", "BEST_EFFORT")
      .option("tableLock", "false")
      .option("url", url)
      .option("dbtable", "dbo.TAB1")
      .option("user", u)
      .option("password", p)
      .option("schemaCheckEnabled", "false")
      .option("batchsize", "1048576")
      .save()

我们注意到尽管作业成功执行,但有时会失败并显示:

SQLServerException: The connection is closed error.

我们尝试在 SQL 中写入的数据需要 10 到 20 分钟才能完全完成。

我想也许我们并行执行 4 个作业是问题的根源,但我不确定。

感谢任何帮助。

正如您提到的那样,您正在 运行 并行进行 4 个 Databricks 活动,在这些活动中,您将数据写入同一数据库中的 4 个不同表,并且错误仅有时发生 - 所以有 您很可能在 SQL 服务器端遇到容量问题。

如果您使用的是 Azure SQL 数据库,您可以升级层,这应该可以正常工作。

另外,请确保 Azure Integration Runtime 有足够的内核和内存来运行 4 个并行管道。如果数据很大,IR 可能无法处理它。 创建一个新的 IR 并将其用于 运行 您的管道。 请参阅下图。

或者,您可以运行您的管道串行而不是并行,这将为数据库和 IR 留下足够的内存来处理数据。