我对hadoop非常陌生,我编写了一个mapreduce程序,它解析输入文件并提取一个特定的模式作为键及其值。我可以很容易地减少它和最终的输出是一个文件与对键和值。
public class EReducer extends MapReduceBase implements Reducer<Text, Text, Text, Text>
{
private Text outputKey1 = new Text();
private Text outputValue1 = new Text();
public void reduce(Text equipKey1, Iterator<Text> equipValues1,
OutputCollector<Text, Text> results1, Reporter reporter1) throws IOException {
String output1 = "";
while(equipValues1.hasNext())
{
Text equi= equipValues1.next();
output1 = output1 + equi.toString();
}
outputKey1.set(equipKey1.toString());
outputValue1.set(output1);
results1.collect(outputKey1, outputValue1);
}
问题是,在文件的开头,我需要显示一个特定键的键总数和值总数作为一个集合。
关键字:日期
价值:发生的事情。
像这样的
12/03/2013 CMB ate pizza
He went to a mall
He met his friend
2013年3月12日,一共发生了3件事。好像会有一系列的日期和事件。
最后我要说的是,在日期“date”上有“this number of action”。2013年3月12日有3起诉讼。。。。
我怎样才能做到这一点?任何帮助都将不胜感激。!
1条答案
按热度按时间cbjzeqam1#
不确定这是否是直接的答案,但我不会将聚合与输出一起存储。考虑清管器获取骨料。它非常适合这个用例。
另外,我不明白“文件开始”的问题。一个reducer任务可以使用多个键值,因此您的文件“part-r-00000”需要
但我倾向于只存储从reducer发出的数据,而不进行聚合,并使用pig运行它们来获得所需的计数(您必须实现udf来解析事件,这非常简单)
只是一个可能的片段