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