您好我是 Azure 数据工厂的新手,并不熟悉在后台运行的后端处理。我想知道与在一个数据流中进行所有转换相比,并行运行几个数据流是否会对性能产生影响。
我正在尝试使用不存在的转换来暂存一些数据。我必须为多张桌子做这件事。当我测试并行运行两个数据流时,集群同时针对两个数据流一起出现。但我不确定这是否是将表加载分配到多个数据流的最佳方法,还是将所有转换都放在一个数据流中
您好我是 Azure 数据工厂的新手,并不熟悉在后台运行的后端处理。我想知道与在一个数据流中进行所有转换相比,并行运行几个数据流是否会对性能产生影响。
我正在尝试使用不存在的转换来暂存一些数据。我必须为多张桌子做这件事。当我测试并行运行两个数据流时,集群同时针对两个数据流一起出现。但我不确定这是否是将表加载分配到多个数据流的最佳方法,还是将所有转换都放在一个数据流中
1:如果您在管道中并行执行数据流,ADF 将根据附加到每个活动的 Azure 集成运行时中的设置为每个集群启动单独的 Spark 集群。
2:如果将所有逻辑放在单个数据流中,那么它将全部在单个 Spark 集群实例上的同一个作业执行上下文中执行。
3:另一种选择是在管道中串行执行活动。如果您在 Azure IR 配置上设置了 TTL,则 ADF 将重用计算资源 (VM),但您仍将在每次执行时使用全新的 Spark 上下文。
所有这些都是有效的做法,您选择哪一种应该取决于您对 ETL 流程的要求。
第 3 项可能需要最长的时间来执行端到端。但它确实提供了每个数据流步骤中操作的清晰分离。
第 2 项在逻辑上可能更难以遵循,并且不会给您太多的可重用性。
第 1 项与第 3 项非常相似,但您可以并行运行它们。当然,并非每个端到端流程都可以并行运行。您可能需要在开始下一个数据流之前完成数据流,在这种情况下,您将返回 #3 串行模式。