同时处理大量数据

时间:2018-03-06 11:03:29

标签: spring-boot mapreduce cluster-computing

我有一张包含大量数据的表格:

        id | title | server 1 | server 2 | server 3
        --------------------------------------------
        1  | item1 | 110.0.0.1| 110.0.0.2| 110.0.0.3
        2  | item2 | 110.0.0.4| 110.0.0.2| 110.0.0.5
        ..
        n  | itemn | 110.0.0.1| 110.0.0.2| 110.0.0.3

我想使用spring boot处理所有这些数据并将结果保存在数据库中,为此,最简单,最简单和最好的原因是什么?

似乎apache的地图缩减可以完成这项工作,但它的设置非常庞大和复杂。

实际使用案例:

  1. 一个春季启动实例
  2. 从项目中选择*;
  3. 逐项处理。
  4. 预期用例:

    1. n spring boot instance
    2. 从项目限制n
    3. 中选择*
    4. 逐项处理
    5. 合并结果并保存在数据库中

2 个答案:

答案 0 :(得分:0)

看看Spring Batch。它允许分块(在多个线程中处理多个块中的数据)并且应该非常适合您的用例。

https://docs.spring.io/spring-batch/trunk/reference/html/spring-batch-intro.html

答案 1 :(得分:0)

我建议使用Spring Batch而不是n个弹簧启动实例来设置一个数据处理管道。

Spring批处理将包含以下每个步骤:

  1. 使用Hive提取数据(从项目中选择*) - 确保将它们作为文件输出写入外部位置。

  2. 提取的数据是MapReduce框架的输入,其中每个项目被处理并写入所需的输出。

  3. mapreduce的输出在此批处理步骤中合并。

  4. 保存到数据库中的另一个进程(如果可能,再次分发)。