2010-10-27 73 views
1

我一直在尝试在Amazon EMR中使用Hadoop流媒体来为一堆文本文件做简单的字数统计。为了处理hadoop流媒体和亚马逊的EMR,我采用了一个非常简化的数据集。每个文本文件只有一行文本(该行可能包含任意数量的文字)。Hadoop流式传输和AMAZON EMR

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

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

我决定用LongValueSum总结减速机加计数在一起,所以我不得不LongValueSum

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

前缀我的映射器的输出,并指定减速是“汇总“

我现在的问题如下:

  1. mapper和reducer之间的中间阶段,只是对流进行排序。它并没有真正结合在一起。我对吗?我问这是因为如果我不使用“LongValueSum”作为映射器输出的单词的前缀,那么在reducer中,我只是接收按键排序但未汇总的流。这是我刚刚收到的订单K,而不是(K,列表(值))在减速机。我需要在我的命令中指定一个组合器吗?

  2. 如何使用其他集合减速器。我明白了,可很多其他的减速/聚集/组合对http://hadoop.apache.org/mapreduce/docs/r0.21.0/api/org/apache/hadoop/mapred/lib/aggregate/package-summary.html

如何在一个Amazon EMR指定这些组合和减速设置?

我相信这样的问题已经在Hadoop流媒体中提交并修复为一个组合器,但我不确定AMAZON EMR将托管哪个版本以及此修补程序的版本。

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

回答

1

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

aggregate减速器在流并执行相关的组合接口,因此,如果它认为合适的Hadoop将使用它[1]

这是我刚刚收到的K有序,而不是(K,列表(值))在减速器。

通过流式接口,您总是可以接收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