Луиджи против Spring Batch

#java #python #spring-batch #etl #luigi

#java #python #spring-batch #etl #luigi

Вопрос:

Мне нужно загрузить текстовые файлы в таблицы oracle. В настоящее время процесс выполняется с использованием сценариев bash, загрузчика sql и инструментов командной строки для проверки.

Я пытаюсь найти более надежные альтернативы. Два варианта, которые я придумал, — это Luigi (фреймворк Python) и Spring Batch.

Я сделал небольшой POC, используя Spring Batch, но я считаю, что в нем много шаблонного кода и он может быть излишним. Я также предпочитаю Python Java. Хорошая особенность Batch — это схема отслеживания заданий, которая поставляется «из коробки» с фреймворком.

Файлы содержат от 200 тыс. до 1 тыс. записей. Никаких преобразований не выполняется, только проверки типа данных и длины. Первые шаги задания состоят в проверке заголовка, трейлера, некоторых дат, выполнении запросов к таблице параметров и усечении промежуточной таблицы.

Не могли бы вы рассказать мне о плюсах и минусах каждой платформы для этого варианта использования?

Ответ №1:

Я бы сказал, что они не являются эквивалентными технологиями. Luigi — это скорее платформа для управления рабочими процессами, которая может помочь организовать множество различных пакетных заданий

Целью Luigi является устранение всех проблем, обычно связанных с длительными пакетными процессами. Вы хотите объединить в цепочку множество задач, автоматизировать их, и будут происходить сбои. Эти задачи могут быть любыми, но обычно это длительно выполняемые задачи, такие как задания Hadoop, сброс данных в базы данных или из них, запуск алгоритмов машинного обучения или что-либо еще. https://luigi.readthedocs.io/en/stable

Spring Batch предоставляет вам повторно используемую платформу для структурирования пакетного задания. Это дает вам множество возможностей «из коробки», например, возможность считывать входные данные из текстовых файлов и записывать выходные данные в базы данных.

Облегченная, всеобъемлющая пакетная платформа, предназначенная для обеспечения разработки надежных пакетных приложений, жизненно важных для повседневной работы корпоративных систем.

Spring Batch предоставляет повторно используемые функции, которые необходимы при обработке больших объемов записей, включая ведение журнала / трассировку, управление транзакциями, статистику обработки заданий, перезапуск заданий, пропуск и управление ресурсамиhttps://spring.io/projects/spring-batch

Теоретически вы могли бы запускать пакетные задания Spring с помощью Luigi.

Основываясь на кратком описании вашего варианта использования, это звучит как хлеб с маслом того, что в первую очередь вдохновило Spring Batch. Фактически, их 15-минутное демонстрационное приложение описывает вариант использования чтения из файла и загрузки записей в базу данных JDBChttps://spring.io/guides/gs/batch-processing .