`
thecloud
  • 浏览: 953826 次
文章分类
社区版块
存档分类
最新评论

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中相应的文件即可。出来的结果如下:


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

Step1Mapper中log的设置如下:

protected void setup(Context context) throws IOException, InterruptedException {
	  log.info("in setup() before super.setup() partition : {}",
			  context.getConfiguration().getInt("mapred.task.partition", -1));
    super.setup(context);
    Configuration conf = context.getConfiguration();
    log.info("in setup() after super.setup() partition : {}",
			  conf.getInt("mapred.task.partition", -1));
    configure(Builder.getRandomSeed(conf), conf.getInt("mapred.task.partition", -1),
      Builder.getNumMaps(conf), Builder.getNbTrees(conf));
  }
可以看到我在setup函数刚进来的时候还没有执行super.setup的时候mapred.task.partition就已经被赋值了,这点如何说明?

看PartialBuilder,我在PartialBuilder中加入了下面的语句:

protected void configureJob(Job job) throws IOException {
    Configuration conf = job.getConfiguration();
    log.info("in PartialBuilder configureJob() partition : {}",
			  conf.getInt("mapred.task.partition", -1));
    job.setJarByClass(PartialBuilder.class);
    
    FileInputFormat.setInputPaths(job, getDataPath());
    FileOutputFormat.setOutputPath(job, getOutputPath(conf));
    
    job.setOutputKeyClass(TreeID.class);
    job.setOutputValueClass(MapredOutput.class);
    
    job.setMapperClass(Step1Mapper.class);
    job.setNumReduceTasks(0); // no reducers
    
    job.setInputFormatClass(TextInputFormat.class);
    job.setOutputFormatClass(SequenceFileOutputFormat.class);
  }
这里是设置Job的和conf的,我在conf不会变的情况下,读取了它的值,如下:

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

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


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


分享,成长,快乐

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


分享到:
评论

相关推荐

    mahout Algorithms源码分析

    樊哲是Mahout的积极学习者和实践者,他在CSDN上分享了关于Mahout算法的解析与案例实战的博客,获得了“CSDN2013博客之星”的荣誉。樊哲的经验表明,虽然Hadoop平台上算法开发一般需要耗费很长时间,但Mahout已经实现...

    Mahout源码

    **Apache Mahout 源码解析** Apache Mahout 是一个基于Java的开源机器学习库,旨在简化大规模数据集上的机器学习算法...深入研究这些源码,可以帮助你理解Mahout的内部工作机制,并有可能进行二次开发或定制化需求。

    mahout源码

    二、Mahout与中文分词 1. **中文分词的重要性** 在中文信息处理中,由于中文没有明确的词边界,分词是首要任务。准确的分词能为后续的文本分析、情感分析、主题模型等提供基础。Mahout虽然并非专门的中文处理库,...

    mahout-distribution-0.5-src.zip mahout 源码包

    mahout-distribution-0.5-src.zip mahout 源码包

    Mahout RandomForest Example使用步骤

    **Apache Mahout Random Forest 示例详解** Apache Mahout 是一个基于 Apache Hadoop 的机器学习库,提供了多种算法,包括分类、聚类和推荐系统等。在这些算法中,随机森林(Random Forest)是一种广泛使用的集成...

    mahout0.9源码(支持hadoop2)

    mahout0.9的源码,支持hadoop2,需要自行使用mvn编译。mvn编译使用命令: mvn clean install -Dhadoop2 -Dhadoop.2.version=2.2.0 -DskipTests

    mahout in action中的源码

    《Mahout in Action》是一本深入探讨Apache Mahout机器学习框架的专业书籍,其源码提供了丰富的实践示例和深入理解Mahout算法的机会。在GitHub上,你可以找到这些源码的完整版本,链接为。下面,我们将详细探讨...

    mahout0.9 源码

    以上就是关于Mahout 0.9源码及其在Eclipse中的使用介绍。通过学习和实践,开发者可以利用Mahout构建强大的机器学习应用,处理各种数据挖掘任务。在实际应用中,可以根据项目需求选择合适的算法,结合Hadoop分布式...

    MAHOUT源码包

    Mahout 是 Apache Software Foundation(ASF) 旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout包含许多实现,包括聚类、分类、推荐过滤...

    svd mahout算法

    svd算法的工具类,直接调用出结果,调用及设置方式参考http://blog.csdn.net/fansy1990 <mahout源码分析之DistributedLanczosSolver(七)>

    mahout-distribution-0.7-src.zip

    《Apache Mahout 0.7源码解析与应用探索》 Apache Mahout 是一个开源机器学习库,专注于大规模数据集的算法实现。该库由Java编写,并采用Maven作为构建工具,提供了一系列用于构建智能应用的高效算法。本文将深入...

    mahout in action源代码maven编译jar包

    Apache Mahout是一个流行的机器学习库,广泛用于数据挖掘和大数据分析。《Mahout in Action》这本书是Mahout技术的权威指南,提供了丰富的示例代码供读者实践。然而,在实际操作过程中,使用Maven编译书中提供的源...

    [Mahout] Windows下Mahout单机安装

    2. Apache Maven:Mahout的构建工具,负责下载依赖和构建项目。确保Maven已安装并配置好`MAVEN_HOME`环境变量。 二、下载Mahout 访问Mahout的官方网站或者GitHub仓库,选择最新稳定版本的源码进行下载。通常,你...

    mahout 0.7 src

    mahout 0.7 src, mahout 源码包, hadoop 机器学习子项目 mahout 源码包

    Mahout In Action英文完整版

    3. **分类算法**:除了推荐系统和聚类外,Mahout还支持多种分类算法,如决策树(Decision Tree)、随机森林(Random Forest)等。这些算法主要用于预测数据的类别归属,广泛应用于文本分类、情感分析等领域。 #### 五、...

    人工智能-推荐系统-新闻推荐-基于Mahout的新闻推荐系统

    相关技术 推荐算法 基于用户的协同过滤 ...调用Deeplearning4j中构建paragraphvector的方法,通过doc2vec构建VSM 用Gensim会更方便点 基于热点的推荐 统计最高浏览量 过滤一定时间前的新闻保证热点的准确

    mahout所需jar包

    2. **下载Mahout**:解压提供的`mahout-distribution-0.5`压缩包到本地目录。 3. **创建输入数据**:准备要进行聚类的数据,通常是以CSV或其他格式存储的数值向量。 4. **预处理数据**:如果需要,可以使用Mahout的...

    mahout1.0编译包

    “其中包括编译后的包及源码”意味着提供者不仅提供了编译好的二进制库,还提供了源代码,这对于开发者来说尤其有价值。他们可以直接查看和修改源代码,以适应特定的需求或解决可能出现的问题,同时也可以更好地理解...

    mahout-core-0.9.jar+mahout-core-0.8.jar+mahout-core-0.1.jar

    这个压缩包包含的是Mahout项目不同版本的核心库,分别是mahout-core-0.9.jar、mahout-core-0.8.jar和mahout-core-0.1.jar。这些版本的差异在于功能的完善、性能的优化以及对新特性的支持。 1. **Mahout核心功能**:...

Global site tag (gtag.js) - Google Analytics