design-patterns - 选择 MapReduce 设计模式

标签 design-patterns hadoop mapreduce

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

我一直在阅读 MapReduce 设计模式和 Hadoop:权威指南,我正在尝试将我拥有的数据连接到特定的映射和减少模式。

第一步是为每条曲线找到加权峰值。执行计算以将 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 行,但我不确定这是否是解决此问题的正确方法。

谢谢!

最佳答案

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

附言。恰为加工N每个映射器中输入文件的行,您可以使用 NLineInputFormat .

关于design-patterns - 选择 MapReduce 设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15031066/

相关文章:

design-patterns - 您是否尝试过一些工具来识别代码中的设计模式?

c++ - 如何在派生类上强制派生类成员

hadoop - 从 REDUCER 将输出写入多个表

c++ - 私有(private) getter 和 setter

Linq-to-SQL 设计问题!

hadoop - 如何在impala中取消对哈希值的哈希处理?

performance - Apache Spark 分布式环境调优

json - 使用HIVE从JSON提取字段

graph - 将多个顺序 HBase 查询的结果传递给 Mapreduce 作业

Hadoop Distcp - 增加 distcp.dynamic.max.chunks.tolerable 配置和调整 distcp