尼玛,好坑呀!
昨天遇到的问题原来是找错包了,那个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的积极学习者和实践者,他在CSDN上分享了关于Mahout算法的解析与案例实战的博客,获得了“CSDN2013博客之星”的荣誉。樊哲的经验表明,虽然Hadoop平台上算法开发一般需要耗费很长时间,但Mahout已经实现...
**Apache Mahout 源码解析** Apache Mahout 是一个基于Java的开源机器学习库,旨在简化大规模数据集上的机器学习算法...深入研究这些源码,可以帮助你理解Mahout的内部工作机制,并有可能进行二次开发或定制化需求。
二、Mahout与中文分词 1. **中文分词的重要性** 在中文信息处理中,由于中文没有明确的词边界,分词是首要任务。准确的分词能为后续的文本分析、情感分析、主题模型等提供基础。Mahout虽然并非专门的中文处理库,...
mahout-distribution-0.5-src.zip mahout 源码包
**Apache Mahout Random Forest 示例详解** Apache Mahout 是一个基于 Apache Hadoop 的机器学习库,提供了多种算法,包括分类、聚类和推荐系统等。在这些算法中,随机森林(Random Forest)是一种广泛使用的集成...
mahout0.9的源码,支持hadoop2,需要自行使用mvn编译。mvn编译使用命令: mvn clean install -Dhadoop2 -Dhadoop.2.version=2.2.0 -DskipTests
《Mahout in Action》是一本深入探讨Apache Mahout机器学习框架的专业书籍,其源码提供了丰富的实践示例和深入理解Mahout算法的机会。在GitHub上,你可以找到这些源码的完整版本,链接为。下面,我们将详细探讨...
以上就是关于Mahout 0.9源码及其在Eclipse中的使用介绍。通过学习和实践,开发者可以利用Mahout构建强大的机器学习应用,处理各种数据挖掘任务。在实际应用中,可以根据项目需求选择合适的算法,结合Hadoop分布式...
Mahout 是 Apache Software Foundation(ASF) 旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout包含许多实现,包括聚类、分类、推荐过滤...
svd算法的工具类,直接调用出结果,调用及设置方式参考http://blog.csdn.net/fansy1990 <mahout源码分析之DistributedLanczosSolver(七)>
《Apache Mahout 0.7源码解析与应用探索》 Apache Mahout 是一个开源机器学习库,专注于大规模数据集的算法实现。该库由Java编写,并采用Maven作为构建工具,提供了一系列用于构建智能应用的高效算法。本文将深入...
Apache Mahout是一个流行的机器学习库,广泛用于数据挖掘和大数据分析。《Mahout in Action》这本书是Mahout技术的权威指南,提供了丰富的示例代码供读者实践。然而,在实际操作过程中,使用Maven编译书中提供的源...
2. Apache Maven:Mahout的构建工具,负责下载依赖和构建项目。确保Maven已安装并配置好`MAVEN_HOME`环境变量。 二、下载Mahout 访问Mahout的官方网站或者GitHub仓库,选择最新稳定版本的源码进行下载。通常,你...
mahout 0.7 src, mahout 源码包, hadoop 机器学习子项目 mahout 源码包
3. **分类算法**:除了推荐系统和聚类外,Mahout还支持多种分类算法,如决策树(Decision Tree)、随机森林(Random Forest)等。这些算法主要用于预测数据的类别归属,广泛应用于文本分类、情感分析等领域。 #### 五、...
相关技术 推荐算法 基于用户的协同过滤 ...调用Deeplearning4j中构建paragraphvector的方法,通过doc2vec构建VSM 用Gensim会更方便点 基于热点的推荐 统计最高浏览量 过滤一定时间前的新闻保证热点的准确
2. **下载Mahout**:解压提供的`mahout-distribution-0.5`压缩包到本地目录。 3. **创建输入数据**:准备要进行聚类的数据,通常是以CSV或其他格式存储的数值向量。 4. **预处理数据**:如果需要,可以使用Mahout的...
“其中包括编译后的包及源码”意味着提供者不仅提供了编译好的二进制库,还提供了源代码,这对于开发者来说尤其有价值。他们可以直接查看和修改源代码,以适应特定的需求或解决可能出现的问题,同时也可以更好地理解...
这个压缩包包含的是Mahout项目不同版本的核心库,分别是mahout-core-0.9.jar、mahout-core-0.8.jar和mahout-core-0.1.jar。这些版本的差异在于功能的完善、性能的优化以及对新特性的支持。 1. **Mahout核心功能**:...