1

对于我的荣誉项目,我正在研究处理由大学生命科学系内的质谱仪 (MS) 产生的大量数据的方法。

我一直在阅读 MapReduce Design Patterns & Hadoop: The Definitive Guide,我正在尝试将我拥有的数据连接到特定的 map & reduce 模式。

第一步是找到每条曲线的加权峰值。执行计算以将 6 或 7 个点(行)减少为单个点,其中包含最大/最小、平均值等信息。

  • 数据位于 ~8GB CSV 文件中,如下所示:

    100312_EXP229_GFPIP_5,1,0.00056783449000000002,0,402.0745297608135,1135.039794921875,1,0,0,0,0,0
    
  • 每行本质上是图表上的一个点,具有 X 和 Y 坐标。

  • 这些点由其中一列组成曲线。所以我知道每条记录,它属于哪条曲线。

  • 每条曲线的点数各不相同,通常在 4 - 8 个点左右。

我的问题是大多数示例似乎是逐行处理问题,例如字数。我需要一次处理 N 行,尽管我不确定这是否是解决这个问题的正确方法。

谢谢!

4

1 回答 1

3

在您的情况下,逐行处理文件以及<curve, point>映射器中的每一行输出就足够了。减速器将接收属于一条曲线的所有点:<curve, {point1, point2, ... }>作为输入。因此,您可以根据减速器中的曲线点计算 max/min/avg 并<curve, max/min/avg>作为最终结果输出。

PS。要在每个映射器中准确处理N输入文件的行,您可以使用NLineInputFormat

于 2013-02-22T19:30:57.513 回答