MapReduce是否适用于数据聚合?

MapReduce是否适用于数据聚合?,mapreduce,Mapreduce,我正在使用一个名为XBus的数据聚合平台。我需要先介绍一下。XBus聚合了许多不同类型的数据源,如RDBMS、XML文件、JSON文件、webservice和其他一些数据源。用户可以定义一个数据处理流,其中包含许多操作,如联接、排序依据、筛选、合并、分组依据。然后,该流将转换为XQuery脚本。SAXON(一个XML处理引擎)将在一台计算机(服务器)中处理XQuery脚本 但是如果数据量很大,则需要花费很长时间才能完成。因此,我正在考虑MapReduce框架,它可以在分布式环境中处理大量数据。但

我正在使用一个名为XBus的数据聚合平台。我需要先介绍一下。XBus聚合了许多不同类型的数据源,如RDBMS、XML文件、JSON文件、webservice和其他一些数据源。用户可以定义一个数据处理流,其中包含许多操作,如联接、排序依据、筛选、合并、分组依据。然后,该流将转换为XQuery脚本。SAXON(一个XML处理引擎)将在一台计算机(服务器)中处理XQuery脚本

但是如果数据量很大,则需要花费很长时间才能完成。因此,我正在考虑MapReduce框架,它可以在分布式环境中处理大量数据。但我不确定MapReduce是否合适

有一个问题可以表明我的怀疑


由于它是一个数据聚合平台,原始数据存储在许多不同的系统中。在使用MapReduce处理数据之前,我们必须从这些系统收集相关数据并将其放入MapReduce(HDFS)中吗?如果是这样,这将需要很长时间,对吗?

是的,您必须将数据加载到HDFS中,然后进行处理。MapReduce是否适用取决于不同的因素:

  • 将数据加载到HDFS所需的时间是否明显小于处理集群中的所有数据并生成最终结果所需的时间
  • 是否可以将来自所有不同来源的数据存储在HDFS中,而只存储在HDFS中,这样就不需要在每次作业运行之前将(所有)新数据加载到HDFS中
  • 您是否使用相同的转换处理不同的输入?在这里,重复运行同一个作业,但使用不同的输入数据,可以使您受益匪浅
  • 每个作业运行的所有输入数据都会更改吗?或者,也可以运行作业(比如针对不同的输入XML文件)并同时使用相同的MR作业对其进行转换

当您决定使用MR时,您可能会发现它很有用。它是一个用于定义复杂数据流的数据API。该项目提供了诸如分叉、连接、标记化、分组等抽象概念。

这个问题非常广泛,您的用例描述得太模糊,可能无法避免问题过于夸张。。我建议只询问你的具体关注点,就像你最后一段中提到的那样。