2014-01-15 15 views
0

我刚刚阅读了关于在twitter中大规模机器学习的这个paperPig中的缩减和存储功能之间的关系

在他们指出这个数字的文件显示,每降低有它自己的存储功能

(它在纸页5如图一中),并指出该代码(我把它短,但很相同):

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%的培训吗?

回答

0

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

每个输出文件通常都有一个名称,如part-r-00000part-r-00372,其中数字表示哪个减速器生成它。如果你有100个reducer,你将以文件part-r-00000,part-r-00001,...,part-r-00099结束。

+0

如果我的训练是说5,8,9,7,4,3。并且我在平行2中下订单,我将可以像这样3,4,5和7,8,9或5,8,9和3,4,7这样的2个文件。我的意思是每个文件只会被排序,或者文件1中的所有数字都会小于file2中的数字? (我应该为此打开一个新问题吗?) – Ran

+0

阅读Hadoop的洗牌和排序阶段。 –

+0

我在这里阅读了一下http://developer.yahoo.com/hadoop/tutorial/module4.html#dataflow在我的理解了这个过程的过程中,结果是像这样3,4,5和7,8, 9。我对吗? – Ran

相关问题