Pig中的reduce和storage函数之间的关系

时间:2014-01-15 20:26:35

标签: machine-learning apache-pig

我刚刚在twitter上阅读了这篇关于大型机器学习的paper

在论文中,他们注意到一个图表显示每个reduce都有自己的存储功能(可在论文第5页图1中找到)

并且还注意到这段代码(我把它缩短了但是非常相似):

training = load `/tables/statuses/$DATE' using TweetLoader() as (id: long, uid: long, text: chararray);
training = foreach training generate $0 as label, $1 as text, RANDOM() as random;
training = order training by random parallel $PARTITIONS;
training = foreach training generate label, text;
store training into `$OUTPUT' using TextLRClassifierBuilder();

在我的理解中,parallel $PARTITIONS触发了猪创建两个减少器,但我不明白与存储功能的关系是什么。 如果我将$PARTITIONS设置为2,那么每个存储模型的名称是什么? 让我说每个商店的功能都会得到50%的培训。我该怎么做? 记忆中是否提供所有培训?还有一种方法可以减少50%的培训吗?

1 个答案:

答案 0 :(得分:0)

如您所述,PARALLEL控制缩减器的数量。在Hadoop框架中,每个reducer都会生成自己的输出文件。 (MultipleOutputs的情况下有多个输出文件。)

每个输出文件通常都有一个名称part-r-00000part-r-00372,其中数字表示减少器生成它。如果您有100个减少器,则最终会得到文件part-r-00000part-r-00001,...,part-r-00099