从 Databricks 向 Azure SQL 数据库插入数据的性能是否会受到数据库大小的影响?

问题描述 投票:0回答:1

我现在正在研究一个用例,需要将大量数据(约 10M 行)从 Azure Databricks 物化视图提取到 Azure SQL 数据库。该数据库使用弹性标准 (eDTU 50) 作为定价层。我已经在Databricks端实施了各种优化措施,但spark作业根本没有运行!这让我想知道瓶颈是否实际上是在数据库而不是 Spark 配置上。

try:
    df.write \
    .format("com.microsoft.sqlserver.jdbc.spark") \
    .mode("overwrite") \
    .option("url", sql_db_url) \
    .option("dbtable", target_table) \
    .option("user", username) \
    .option("password", password) \
    .option("batchsize", "100000") \
    .option("tableLock", "true") \
    .option("schemaCheckEnabled", "false") \
    .option("reliability Level", "BEST_EFFORT") \
    .save()

    print("Successfully write data into target SQL database")
except Exception as error:
    print("An exception occurred:", error)

enter image description here (每当在Databricks上运行插入语句时,DB的CPU利用率就达到100%)

感谢任何建议

尝试了 Databricks 中的各种优化措施以及不同的集群大小。

apache-spark azure-sql-database azure-databricks azure-elasticpool
1个回答
0
投票

就像 Anupam 所说,对于这样的工作负载,您的瓶颈很可能是 50 eDTU。您那里的图表仅显示 DTU,并且它飙升至 100%;为了更好地理解,请将 DTU 指标替换为 CPU、数据 IO 和日志 IO(DTU 主要由这些组成)。 日志 IO 可能是您的瓶颈,因为您要将数据转储到数据库中。如果您还看到 CPU 和 Workers 较高,那么您也可能缺少索引。

© www.soinside.com 2019 - 2024. All rights reserved.