Hadoop流媒体和AMAZON EMR

时间:2010-10-27 16:01:20

标签: hadoop amazon-emr

我一直在尝试在Amazon EMR中使用Hadoop流来为一堆文本文件执行简单的字数统计。为了掌握hadoop流媒体和亚马逊的EMR,我也采用了非常简化的数据集。每个文本文件中只有一行文本(该行可以包含任意大量的单词)。

映射器是一个R脚本,它将行拆分为单词并将其反射回流中。

cat(wordList[i],"\t1\n")

我决定使用LongValueSum Aggregate reducer将计数加在一起,所以我不得不用LongValueSum作为我的mapper输出的前缀

cat("LongValueSum:",wordList[i],"\t1\n")

并将reducer指定为“aggregate”

我现在的问题如下:

  1. mapper和reducer之间的中间阶段,只需对流进行排序。它并没有真正由键组合。我对吗?我问这个是因为如果我不使用“LongValueSum”作为mapper输出的单词的前缀,在reducer中我只接收按键排序的流,但不会聚合。那就是我刚收到K,而不是(K,list(Values))在reducer处。我是否需要在命令中指定合并器?

  2. 如何使用其他聚合减速器。我看到,http://hadoop.apache.org/mapreduce/docs/r0.21.0/api/org/apache/hadoop/mapred/lib/aggregate/package-summary.html

  3. 上有很多其他减速器/聚合器/合成器

    如何在AMAZON EMR中指定这些组合器和减速器?

    我相信已经在Hadoop流媒体中为组合器提交并修复了此类问题,但我不确定AMAZON EMR的托管版本以及此修复程序可用的版本。

    1. 自定义输入格式和记录读者和作者如何。有很多用Java编写的库。为每个选项指定java类名是否足够?

1 个答案:

答案 0 :(得分:1)

  

mapper和reducer之间的中间阶段,只是对流进行排序。它并没有真正由键组合。我对吗?

流式传输中的aggregate reducer确实实现了相关的组合器接口,因此Hadoop会在它认为合适时使用它[1]

  

这就是我刚收到的K,而不是(K,list(Values))在reducer处。

使用流媒体界面,您始终可以获得K,V值对;你永远不会收到(K,list(values))

  

如何使用其他聚合减速器。

你不确定哪一个?您指定的链接会快速汇总每个

的行为
  

我认为已经提交并修复了此类问题

你在想什么?

  

不确定AMAZON EMR托管的版本

EMR基于Hadoop 0.20.2

  

为每个选项指定java类名是否足够?

你的意思是在流媒体的背景下?还是聚合框架?

[1] http://hadoop.apache.org/mapreduce/docs/r0.21.0/api/org/apache/hadoop/mapred/lib/aggregate/package-summary.html