【问题标题】:Tools to do data processing from Java从 Java 进行数据处理的工具
【发布时间】:2013-10-11 01:37:41
【问题描述】:

我有一个旧系统,它使用 SAS 从数据库中提取原始数据、清理和整合它,然后对输出的文档进行评分。

我想迁移到 Java 或类似的面向对象的解决方案,这样我就可以实现单元测试,以及一般更好的代码控制。 (我不是在谈论检修整个系统,而是在我可以的地方注入 java)。

就数据大小而言,我们谈论的是大约 1 TB 的数据被摄取和创建。在扩展方面,这可能会增加大约 10 倍,但不太可能像全球 Web 项目那样大规模增加。

问题是 - 哪种工具最适合此类项目?

我在哪里可以找到这些信息 - 应该使用哪些搜索词?

在 SQL 数据库上进行处理(根据需要创建和删除表、添加列)是合适的还是糟糕的解决方案?

我已经快速了解了 Hadoop - 但由于这个项目的规模很小,Hadoop 会不会是一个不必要的复杂性?

是否有任何 Java 包在合并、连接、排序、分组数据集以及修改数据方面具有与 SAS 或 SQL 类似的功能?

【问题讨论】:

  • 您能详细说明一下-系统的全部内容吗? - 它只是一个从一个月前的日志生成的报告系统吗?(这里强调“输出数据的可用性”)你需要它吗? - 系统正在使用什么类型的数据?使用实时/流处理?现有系统的分布情况如何?您可以将数据分布在集群上吗?
  • 嗨,谢谢。这是对新记录的每周评估。这不是时间关键,因为它在周末运行。目前在单个多核处理器上运行,现阶段集群看起来不可行。

标签: java sql hadoop bigdata data-processing


【解决方案1】:

鉴于您的问题陈述,我很难准确地规定您需要什么。

这听起来像是一个很好的数据库 API(即 native JDBC 可能是你所需要的一个好的开源数据库后端)

但是,我认为您应该花一些时间来查看Lucene。这是一个很棒的工具,可以很好地满足您的评分需求。采用搜索引擎索引方法来解决您的问题可能会很有成效。

【讨论】:

  • 我认为问题是 - 使用数据库进行这种处理是否合适? (与简单的数据存储和检索相反)。
【解决方案2】:

我认为你需要问自己的问题是

  1. 您的数据集的性质是什么,更新频率。
  2. 未来您在这 1TB 或更多数据上的工作量是多少。会不会主要是离线读取和分析操作?还是会有很多随机写操作?

这是一个article 讨论是否选择使用 Hadoop,我认为值得一读。

如果您只有每天或每周更新数据集,Hadoop 是更好的选择。对数据的主要操作是只读操作,以及进一步的数据分析。对于您提到的合并、加入、排序、分组数据集操作,Cascading 是一个运行在 Hadoop 之上的 Java 库,它很好地支持了该操作。

【讨论】:

    猜你喜欢
    • 2011-07-29
    • 2021-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多