【问题标题】:Writing from Databricks to Synapse (Azure DW) very slow从 Databricks 写入 Synapse (Azure DW) 非常慢
【发布时间】:2023-03-07 18:04:01
【问题描述】:

我们正在使用 Databricks 及其 SQL DW 连接器将数据加载到 Synapse 中。我有一个包含 10 000 行和 40 列的数据集。需要 7 分钟!

使用带有 Polybase 和暂存选项的数据工厂加载相同的数据集需要 27 秒。与批量复制相同。

可能出了什么问题?我错过了一些配置吗?还是照常营业?

连接配置:

df_insert.write .format("com.databricks.spark.sqldw") .option("url", sqlDwUrlSmall) .option("dbtable", t_insert) .option( "forward_spark_azure_storage_credentials","True") .option("tempdir", tempDir) .option("maxStrLength", maxStrLength) .mode("append") .save()

【问题讨论】:

  • 您使用的是什么 DWU?什么资源类与执行加载的用户相关联?
  • 我们使用的是最小的 DWU,DW100c。 Databricks 用户在 largec 资源类中,Data Factory 用户在默认 smallrc 中。我刚刚从文档中注意到,在我们的 DWU 级别上,这些资源类之间没有区别。两者都获得 25%。另外一点,使用 Databricks 从 Synapse 读取非常快。
  • 100 是最低的 DWU,并不适合太多。尝试更高的,400、1000,看看你是否得到不同的结果。如果没有,请回来。
  • 我想指出,在相同的数据库级别下,我得到完全不同的性能结果,具体取决于我使用的是数据工厂还是 Databricks。所以调整数据库级别不是我要找的答案。
  • @tero:我面临着完全相同的问题...如果您找到了解决方案,请将其发布为答案

标签: databricks azure-sql-data-warehouse azure-synapse


【解决方案1】:

您可以尝试更改写语义:Databricks documentation

使用复制写入语义,我能够更快地在 Synapse 中加载数据。

你可以在运行写命令之前进行配置,这样:

spark.conf.set("spark.databricks.sqldw.writeSemantics", "copy")

【讨论】:

    猜你喜欢
    • 2021-07-16
    • 2021-08-26
    • 2021-10-22
    • 2018-05-07
    • 2021-12-24
    • 2020-06-16
    • 2022-07-27
    • 2021-11-20
    • 1970-01-01
    相关资源
    最近更新 更多