路易吉vs Spring Batch

时间:2019-03-21 03:18:33

标签: java python spring-batch etl luigi

我必须将txt文件加载到oracle表中。如今,使用bash脚本,sql loader和命令行工具进行验证可以完成该过程。

我正在尝试找到更可靠的替代方案。我想到的两个选项是Luigi(Python框架)和Spring Batch。

我使用Spring Batch制作了一些POC,但我相信它有很多样板代码,可能有点过头了。与Java相比,我也更喜欢Python。 Batch的优点是框架附带的作业跟踪架构。

文件包含200k至1kk记录。不执行任何转换,仅执行数据类型和长度验证。这项工作的第一步包括检查页眉,预告片,一些日期,查询参数表并截断暂存表。

对于此用例,您能给我每个框架的利弊吗?

1 个答案:

答案 0 :(得分:1)

我认为它们不是等效技术。 Luigi更像是一个工作流/流程管理框架,可以帮助组织和协调许多不同的批处理作业

  

Luigi的目的是解决通常与长时间运行的批处理过程相关的所有管道问题。您希望将许多任务链接起来,使其自动化,否则将发生故障。这些任务可以是任何事情,但通常都是长期运行的任务,例如Hadoop作业,向数据库转储数据或从数据库转储数据,运行机器学习算法或其他任何事情。 https://luigi.readthedocs.io/en/stable/

Spring Batch为您提供了可重用的框架,用于构造批处理作业。它为您提供了许多开箱即用的功能,例如能够从文本文件读取输入并将输出写入数据库。

  

一个轻量级,全面的批处理框架,旨在开发对企业系统的日常运营至关重要的强大的批处理应用程序。

     

Spring Batch提供了可重用的功能,这些功能对于处理大量记录至关重要,包括日志记录/跟踪,事务管理,作业处理统计信息,作业重新启动,跳过和资源管理。 https://spring.io/projects/spring-batch

理论上,您可以使用Luigi运行Spring Batch作业。

基于对用例的简短描述,这听起来像是首先启发了Spring Batch的基础。实际上,他们的15分钟演示应用程序涵盖了从文件读取并将记录加载到JDBC数据库https://spring.io/guides/gs/batch-processing/中的用例。