首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 服务器 > 云计算 >

mahout源码分析之Decision Forest 三部曲之二BuildForest(二)小插曲

2013-10-08 
mahout源码分析之Decision Forest 三部曲之二BuildForest(2)小插曲玛,好坑呀!昨天遇到的问题原来是找错包

mahout源码分析之Decision Forest 三部曲之二BuildForest(2)小插曲

尼玛,好坑呀!

昨天遇到的问题原来是找错包了,那个Step1Mapper.class 同时在mahout-core-0.7.jar     mahout-core-0.7-job.jar  mahout-examples-0.7-job.jar 三个包中,但是用到的只是mahout-core-0.7.jar中的Step1Mapper.class,所以只用替换mahout-core-0.7.jar中相应的文件即可。出来的结果如下:

mahout源码分析之Decision Forest 三部曲之二BuildForest(二)小插曲

可以看到这里的partition已经变成了0了,这个值是在哪里设置的?

Step1Mapper中log的设置如下:

可以看到这个值还是没有设置的,如果设置的话不应该读到-1。

所以得到的结论就是Job提交之前conf没有设置mapred.task.partition的值,但是刚提交,在Mapper的第一个运行函数setup中就可以读取conf的mapred.task.partition的值了,这是神马情况?难道其他地方还有设置这个值的?好吧,我搜搜看:

mahout源码分析之Decision Forest 三部曲之二BuildForest(二)小插曲

尼玛,还真有。除了mahou里面的,hadoop里面也有三个类含有这个值:FileOutputFormat、IsolationRunner、Task。这三个中只有Task最像是设置mapred.task.partition的值的类。Task:任务。好吧,应该就是这里设置了这个值了。好吧,我为啥老是追着这个值不放?因为我编写Step1Mapper 的仿制代码的时候需要这个值,而我又不知道这个值是多少,坑爹呀。昨天就应该知道的,结果替换错了.class文件了。算了,不纠结这个变量值了,知道了就好。如果真要追究的话,应该要涉及到hadoop的执行原理了吧。


分享,成长,快乐

转载请注明blog地址:http://blog.csdn.net/fansy1990


1楼fansy1990昨天 23:16
只用编写一个简单的wordcount程序就可以验证了上面的猜测了。在job提交之前不设置mapred.task.partition的值,然后在mapper中获取conf.getInt("mapred.task.partition",-1)可以得到值0。

热点排行