Несколько потоков данных против всех преобразований в одном
Привет, я новичок в фабрике данных Azure и не все знаком с внутренней обработкой, которая выполняется за кулисами. Мне интересно, влияет ли на производительность параллельное выполнение нескольких потоков данных по сравнению со всеми преобразованиями в одном потоке данных.
Я пытаюсь обработать некоторые данные с несуществующим преобразованием. я должен сделать это для нескольких таблиц. когда я тестировал два потока данных параллельно, кластеры были объединены для обоих потоков данных одновременно. Но я не уверен, что это лучший подход для распределения загрузки таблиц по нескольким потокам данных или для всех преобразований в одном потоке данных.
1 ответ
1. Если вы выполняете потоки данных в конвейере параллельно, ADF будет раскручивать отдельные кластеры Spark для каждого на основе настроек в вашей среде выполнения интеграции Azure, прикрепленной к каждому действию.
2: Если вы поместите всю свою логику в один поток данных, тогда все будет выполняться в том же контексте выполнения задания в одном экземпляре кластера Spark.
3: Другой вариант - выполнить действия последовательно в конвейере. Если вы установили TTL в конфигурации Azure IR, ADF будет повторно использовать вычислительные ресурсы (виртуальные машины), но вы по-прежнему будете использовать совершенно новый контекст Spark для каждого выполнения.
Все это допустимые практики, и какой из них вы выберете, должен определяться вашими требованиями к процессу ETL.
№ 3, вероятно, займет больше всего времени для сквозного выполнения. Но он обеспечивает четкое разделение операций на каждом этапе потока данных.
Номер 2 может быть более сложным для логического понимания и не дает вам возможности повторного использования.
№1 действительно похож на №3, но вы запускаете их все параллельно. Конечно, не каждый сквозной процесс может выполняться параллельно. Вы можете потребовать, чтобы поток данных завершился перед началом следующего, и в этом случае вы вернетесь в последовательный режим №3.