Azure数据工厂和数据流花费太多时间来处理从暂存到数据库的数据

时间:2019-12-19 15:39:15

标签: azure azure-data-factory azure-data-factory-2

所以我有一个每天运行的数据工厂,它从oracle本地数据库中选择大约80M条记录中的数据并将其移至Parquet文件,这大约需要2个小时,我想加快这一过程。还有在db中插入和更新数据的数据流过程

镶木地板文件设置

taking to much time enter image description here

下一步是从镶木地板文件中调用数据流,该数据流将数据作为更新插入到数据库中,但这也花费了太多时间

数据流设置

enter image description here

让我知道数据流的哪种计算类型

内存优化 计算优化 通用

enter image description here

enter image description here

3 个答案:

答案 0 :(得分:1)

您可以打开数据流的监视详细执行计划吗?单击数据流中的每个阶段,然后查看大部分时间花在了哪里。您应该在视图顶部看到花了多少时间来设置计算环境,花了多少时间读取源代码以及检查接收器上的总写入时间。

我有一些如何查看和优化此here的示例。

答案 1 :(得分:0)

嗯,我想45分钟将85M个文件填充到SQL DB中并不可怕。您可以将任务分解为多个部分,并查看花费最长时间才能完成的任务。您可以使用Databricks吗?我使用Databricks进行了很多预处理,发现Spark非常超快!!如果您可以在Databricks中进行预处理并将所有内容推送到您的SQL世界中,那么您可能会找到最佳的解决方案。

答案 2 :(得分:0)

根据文档-https://docs.microsoft.com/en-us/azure/data-factory/concepts-data-flow-performance#partitioning-on-sink,您可以尝试在Sink的partition标签下修改Optimize设置吗?

我在默认分区设置上遇到了类似的问题,在将分区策略更改为round robin并将分区数设置为{{1}之后,1M记录本身的数据加载接近30分钟。 }(就我而言)在不到一分钟的时间内发生了加载。

尝试同时尝试源分区(https://docs.microsoft.com/en-us/azure/data-factory/concepts-data-flow-performance#partitioning-on-source)和接收器分区设置,以提出最佳策略。这样可以缩短数据加载时间