用Java构建大容量批量数据处理工具

用Java构建大容量批量数据处理工具,java,jdbc,etl,Java,Jdbc,Etl,我正在尝试使用Java构建一个ETL工具。ETL工具用于对大量数据(包括关系数据和其他类型的数据)执行批读、写和更新操作。我发现很难选择正确的框架/工具来完成这项任务 简化的典型用例: 建立与数据库的连接(源) 读取连接两个表的一百万条记录 与另一个数据库(目标)建立连接 更新/写入目标数据库中的100万条记录 我的选择: 使用普通JDBC。使用JDBC构建更高级别的API,以完成与数据库之间的连接、读取和写入数据的任务 使用Spring或Hibernate之类的框架。我从未使用过这些框架。我认

我正在尝试使用Java构建一个ETL工具。ETL工具用于对大量数据(包括关系数据和其他类型的数据)执行批读、写和更新操作。我发现很难选择正确的框架/工具来完成这项任务

简化的典型用例:

  • 建立与数据库的连接(源)
  • 读取连接两个表的一百万条记录
  • 与另一个数据库(目标)建立连接
  • 更新/写入目标数据库中的100万条记录
  • 我的选择:

  • 使用普通JDBC。使用JDBC构建更高级别的API,以完成与数据库之间的连接、读取和写入数据的任务

  • 使用Spring或Hibernate之类的框架。我从未使用过这些框架。我认为Hibernate是用于ORM的,但我的不是ORM的一种需求。Spring可能有一些批处理功能,但我想知道学习这些功能的努力是否比我自己在选项1中所做的要少

  • 还有其他选择/框架吗

  • 上面哪一个最适合我

    注意事项

  • 我需要选择一个选项,可以给我高水平的性能。我不介意为了更高的性能而变得复杂或失去灵活性
  • 我还不知道Spring等框架,我只知道核心Java

  • 最近,我做了很多谷歌搜索,但如果您能提供一些“第一手”意见,我将不胜感激。

    基于您的使用场景,我将推荐您。它很容易学习和实现。在高层,它包含以下3个重要组件

  • ItemReader:此组件用于从源读取批处理数据。您已经准备好使用JDBCITeamReader、HibernateItemReader等实现
  • 项目处理器:此组件用于编写JAVA代码,如果需要,将执行一些处理。如果不需要处理,则可以跳过此操作
  • 项目编写器:此组件用于将数据批量写入目标。即使对于这个组件,您也已经准备好使用类似于ItemReader的实现

  • 感谢所有与Spring批处理相关的更新。然而,经过一些研究,我决定使用EasyBatch。从

    Easy Batch是一个框架,旨在使用 JAVA它的主要目标是处理 繁琐的任务,如读取、过滤、解析和验证输入 让您专注于批处理业务 逻辑


    Try,一个面向Java的轻量级ETL引擎。这个问题对于Stack Overflow这样的网站来说太广泛了。除了不明确(总共有多少条记录?需要什么类型的吞吐量?正在进行什么类型的转换),这是在寻求高级设计建议,而不是帮助解决特定的编程问题。是的,我同意这是广泛的。但我不同意这是不明确的。你真的想让我指定总共有多少条记录?数量级?当然一次一百万条记录和每小时数亿条记录之间有一个重要的区别。好吧,因为这是一个批处理环境,可用于未来的客户,让我们假设每天的记录量可能高达5亿条,每月的记录量可能低至1000条这听起来真的很有趣。。。我需要先了解Spring框架才能使用它吗?@hashbrown您一定很想了解核心框架的基本工作原理。你可能无论如何都想知道它;我将它用于任何非玩具Java应用程序。。。但是你认为学习这些框架值得吗?我觉得学习spring模块的每一次努力都是值得的。如果您没有学习,您将不得不实现类似的处理设计。学习spring将帮助您在将来利用现成的代码,而不是“重新发明轮子”。FWIW我向那些事先不了解spring的人推荐EasyBatch,spring Batch的学习曲线很陡峭。@hashbrown,@whitfin:Hi,我计划在我们的一个实现中也使用easy Batch。只是想知道您对它的体验,以及它在实现中的可伸缩性。谢谢