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

时间:2014-12-09 06:36:48

标签: java jdbc etl

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

简化的典型用例:

  1. 与数据库建立连接(来源)
  2. 阅读加入两张桌子的100万条记录
  3. 与其他数据库(目标)建立连接
  4. 更新/写入目标数据库中的100万条记录
  5. 我的选择:

    1. 使用纯JDBC。使用JDBC构建更高级别的API,以完成与数据库连接,读取和写入数据的任务。

    2. 使用Spring或Hibernate等框架。我从未使用过这些框架。我认为Hibernate是出于ORM的目的,但我的不是ORM的要求。 Spring可能会有一些批量处理的东西,但是我想知道学习它的努力是否实际上比我自己的选项1要少。

    3. 任何其他选项/框架?

    4. 上面哪一个最适合我?

      考虑

      1. 我需要选择能够提供高水平性能的选项。我不介意复杂性或失去灵活性以支持更高的性能。
      2. 我还不知道像Spring这样的任何框架。我只知道核心Java。
      3. 最近,我做了很多谷歌搜索,但如果你能给我一些“第一手”意见,我将不胜感激。

3 个答案:

答案 0 :(得分:3)

根据您的使用情况,我建议Spring Batch。它易于学习和实施。在高级别,它包含以下3个重要组成部分。

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

答案 1 :(得分:3)

感谢所有与Spring Batch相关的更新。然而,经过一些研究,我决定使用EasyBatch。来自http://www.easybatch.org

  

Easy Batch是一个旨在简化批处理的框架   Java的。它的主要目标是处理样板代码   繁琐的任务,如阅读,过滤,解析和验证输入   数据,让您专注于批处理业务   逻辑。

答案 2 :(得分:0)

尝试Data Pipeline,一个用于Java的轻量级ETL引擎。它易于使用。