Цель Luigi — решить все проблемы, обычно связанные с длительными пакетными процессами. Вы хотите связать множество задач, автоматизировать их, и сбои будут происходить. Эти задачи могут быть любыми, но обычно это длительные задачи, такие как задания Hadoop, сброс данных в/из баз данных, запуск алгоритмов машинного обучения или что-то еще.
Существуют и другие программные пакеты, ориентированные на аспекты обработки данных более низкого уровня, такие как Hive, Pig или Cascading. Luigi не является фреймворком для их замены. Вместо этого он помогает вам объединить множество задач, где каждая задача может быть запросом Hive, заданием Hadoop в Java, заданием Spark в Scala или Python, фрагментом Python, дампом таблицы из базы данных или чем-то еще. Легко создавать длительные конвейеры, включающие тысячи задач, выполнение которых занимает дни или недели. Луиджи берет на себя большую часть управления рабочим процессом, чтобы вы могли сосредоточиться на самих задачах и их зависимостях.
Вы можете создать практически любую задачу, которую хотите, но Luigi также поставляется с набором инструментов из нескольких общих шаблонов задач, которые вы используете. Он включает поддержку выполнения заданий Python mapreduce в Hadoop, а также заданий Hive и Pig. Он также поставляется с абстракциями файловой системы для HDFS и локальными файлами, которые обеспечивают атомарность всех операций файловой системы. Это важно, потому что это означает, что ваш конвейер данных не выйдет из строя в состоянии, содержащем частичные данные.