基于mapreduce的knn算法实现中遇到的问题

longyixian 2014-09-03 08:33:43
加精
请问一下我下面是什么错误,谢谢诸位了
14/09/03 08:08:01 INFO jvm.JvmMetrics: Initializing JVM Metrics with processName=JobTracker, sessionId=
14/09/03 08:08:01 WARN mapred.JobClient: Use GenericOptionsParser for parsing the arguments. Applications should implement Tool for the same.
14/09/03 08:08:01 WARN mapred.JobClient: No job jar file set. User classes may not be found. See JobConf(Class) or JobConf#setJar(String).
14/09/03 08:08:02 INFO input.FileInputFormat: Total input paths to process : 1
14/09/03 08:08:02 INFO mapred.JobClient: Running job: job_local_0001
14/09/03 08:08:02 INFO input.FileInputFormat: Total input paths to process : 1
14/09/03 08:08:02 INFO mapred.MapTask: io.sort.mb = 100
14/09/03 08:08:03 INFO mapred.MapTask: data buffer = 79691776/99614720
14/09/03 08:08:03 INFO mapred.MapTask: record buffer = 262144/327680
14/09/03 08:08:03 WARN mapred.LocalJobRunner: job_local_0001
java.lang.ClassCastException: class Point2D
at java.lang.Class.asSubclass(Class.java:3018)
at org.apache.hadoop.mapred.JobConf.getOutputKeyComparator(JobConf.java:599)
at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.<init>(MapTask.java:791)
at org.apache.hadoop.mapred.MapTask$NewOutputCollector.<init>(MapTask.java:524)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:613)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:305)
at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:177)
14/09/03 08:08:03 INFO mapred.JobClient: map 0% reduce 0%
14/09/03 08:08:03 INFO mapred.JobClient: Job complete: job_local_0001
14/09/03 08:08:03 INFO mapred.JobClient: Counters: 0
...全文
5217 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
angelyly 2016-05-02
  • 打赏
  • 举报
回复
楼主好,我在做hadoop平台的文本分类,不知楼主是否还有工程文件,求分享一份,求看到,936402379@qq.com
angelyly 2016-04-26
  • 打赏
  • 举报
回复
时间有点久远了,不知道博主还会不会看到这个回复,我在做hadoop的文本分类,希望能有一份您的工程,求看到
伊顺鸣 2014-09-09
  • 打赏
  • 举报
回复
不错的啊。。。。
GW786228836 2014-09-05
  • 打赏
  • 举报
回复
changuncle 2014-09-05
  • 打赏
  • 举报
回复
看不太懂啊,不过没关系,帮顶一下。
longyixian 2014-09-04
  • 打赏
  • 举报
回复
引用 9 楼 wulinshishen 的回复:
http://blog.csdn.net/fighting_one_piece/article/details/39030969 希望对你有帮助
谢谢!
金色华年373 2014-09-04
  • 打赏
  • 举报
回复
非常好灰常好
bigsolomon 2014-09-04
  • 打赏
  • 举报
回复
赞一个赞一个
  • 打赏
  • 举报
回复
没有Reducer的话,设置job.setNumReduceTasks(0);要不默认使用一个Reducer类的
longyixian 2014-09-03
  • 打赏
  • 举报
回复
这是mapreduce里的代码,求指教看看哪里写的不对

import java.io.IOException;
import java.net.URI;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;



public 
class knn {
	
     public static class TokenizerMapper extends
			Mapper<LongWritable, Text, Point2D, Text> {

		public Text one = new Text();
		public Point2D Point2DD = new Point2D();

		public void map(LongWritable key, Text value, Context context)
				throws IOException, InterruptedException {

			String uri = "hdfs://localhost:9000/user/input/test.txt";
			Configuration conf = new Configuration();
			FileSystem fs = FileSystem.get(URI.create(uri), conf);
			FSDataInputStream hdfsInStream = fs.open(new Path(uri));
			byte[] ioBuffer = new byte[13];
			int readLen = hdfsInStream.read(ioBuffer);
			double testx, testy, datax, datay, distance;
			while (-1 != readLen) {

				String res = new String(ioBuffer);
				readLen = hdfsInStream.read(ioBuffer);
				String tline = res.toString();
				String[] tlineSplit = tline.split(" ");
				testx = Double.parseDouble(tlineSplit[1]);
				testy = Double.parseDouble(tlineSplit[2]);

				String dline = value.toString();
				String[] dlineSplit = dline.split(" ");

				datax = Double.parseDouble(dlineSplit[1]);
				datay = Double.parseDouble(dlineSplit[2]);
				distance = Math.sqrt((testx - datax) * (testx - datax)
						+ (testy - datay) * (testy - datay));

				Point2DD.x = tlineSplit[0];
				//Point2DD.setX(tlineSplit[0]);
				Point2DD.y = distance;
				one.set(dlineSplit[0]);
				// Point2DD(tlineSplit[0],distance);
				context.write(Point2DD, one);
			}

		}
	}

     public static void main(String[] args) throws Exception {
        
    	 Configuration conf = new Configuration();
    
         if (args.length != 2) {
             System.err.println("Usage: wordcount  ");
             System.exit(2);
         }
      
         Job job = new Job(conf, "word count");
         job.setJarByClass(knn.class);
         job.setMapperClass(TokenizerMapper.class);
         //job.setReducerClass(IntSumReducer.class);
         job.setMapOutputKeyClass(Point2D.class);
         job.setMapOutputValueClass(Text.class);
         job.setOutputKeyClass(Point2D.class);
         job.setOutputValueClass(Text.class);
      
         
         FileInputFormat.addInputPath(job, new Path(args[0]));
         FileOutputFormat.setOutputPath(job, new Path(args[1]));

         System.exit(job.waitForCompletion(true) ? 0 : 1);
         
     }

}

longyixian 2014-09-03
  • 打赏
  • 举报
回复
这是Point2D里的代码

import java.io.DataInput;

import java.io.DataOutput;

import java.io.IOException;


import org.apache.hadoop.io.Writable;


public class Point2D implements Writable {

		public double y;
	
	public String x;
	
	public String getX() {return x;}
	
	public double getY() {return y;}

	
	public void readFields(DataInput in) throws IOException {
	
		x = in.readUTF();
		
	y = in.readDouble();
		
}

		
public void write(DataOutput out) throws IOException {
	
		out.writeChars(x);
		
	out.writeDouble(y);
	
	}

	}

  • 打赏
  • 举报
回复
java.lang.ClassCastException: class Point2D 这有提示,你在仔细看看代码
zixin1990 2014-09-03
  • 打赏
  • 举报
回复
引用 9 楼 wulinshishen 的回复:
http://blog.csdn.net/fighting_one_piece/article/details/39030969 希望对你有帮助
很详细的博客,赞!
  • 打赏
  • 举报
回复
http://blog.csdn.net/fighting_one_piece/article/details/39030969 希望对你有帮助
longyixian 2014-09-03
  • 打赏
  • 举报
回复
引用 6 楼 wulinshishen 的回复:
我稍候写一下KNN代码,写好发你!
不知道您发到哪里?我留个qq邮箱吧1124250368 再次感谢!
longyixian 2014-09-03
  • 打赏
  • 举报
回复
引用 6 楼 wulinshishen 的回复:
我稍候写一下KNN代码,写好发你!
好的!谢谢你啦!
  • 打赏
  • 举报
回复
我稍候写一下KNN代码,写好发你!
longyixian 2014-09-03
  • 打赏
  • 举报
回复
引用 4 楼 wulinshishen 的回复:
没有Reducer的话,设置job.setNumReduceTasks(0);要不默认使用一个Reducer类的
加上这行代码,确实ok了,但是程序运行有问题。还请麻烦看看哪里写的不对 输出文件如下: Point2D@11bed71 d1 Point2D@11bed71 d1 Point2D@11bed71 d1 Point2D@11bed71 d1 Point2D@11bed71 d1 Point2D@11bed71 d1 Point2D@11bed71 d2 Point2D@11bed71 d2 Point2D@11bed71 d2 Point2D@11bed71 d2 Point2D@11bed71 d2 Point2D@11bed71 d2 Point2D@11bed71 d3 Point2D@11bed71 d3 Point2D@11bed71 d3 Point2D@11bed71 d3 Point2D@11bed71 d3 Point2D@11bed71 d3 Point2D@11bed71 d4 Point2D@11bed71 d4 Point2D@11bed71 d4 Point2D@11bed71 d4 Point2D@11bed71 d4 Point2D@11bed71 d4 Point2D@11bed71 d5 Point2D@11bed71 d5 Point2D@11bed71 d5 Point2D@11bed71 d5 Point2D@11bed71 d5 Point2D@11bed71 d5 Point2D@11bed71 d6 Point2D@11bed71 d6 Point2D@11bed71 d6 Point2D@11bed71 d6 Point2D@11bed71 d6 Point2D@11bed71 d6 我的data.txt里的内容是 d1 6.0 104.0 A d2 2.0 101.0 A d3 1.0 90.0 A d4 101.0 8.0 R d5 99.0 10.0 R d6 98.0 5.0 R 我的test.txt里的内容是 t1 5.0 100.0 t2 3.0 95.0 t3 8.0 110.0 t4 110.0 5.0 t5 99.0 11.0 t6 98.0 6.0
掌握分布式mapreduce与raft算法与分布式数据库MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念Map(映射)和Reduce(归约),是它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。 当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对的每一个共享相同的键组。MapReduce是面向大数据并行处理的计算模型、框架和平台,它隐含了以下三层含义:1)MapReduce是一个基于集群的高性能并行计算平台(Cluster Infrastructure)。它允许用市场上普通的商用服务器构成一个包含数十、数百至数千个节点的分布和并行计算集群。2)MapReduce是一个并行计算与运行软件框架(Software Framework)。它提供了一个庞大但设计精良的并行计算软件框架,能自动完成计算任务的并行化处理,自动划分计算数据和计算任务,在集群节点上自动分配和执行任务以及收集计算结果,将数据分布存储、数据通信、容错处理等并行计算涉及到的很多系统底层的复杂细节交由系统负责处理,大大减少了软件开发人员的负担。3)MapReduce是一个并行程序设计模型与方法(Programming Model & Methodology)。它借助于函数式程序设计语言Lisp的设计思想,提供了一种简便的并行程序设计方法,用Map和Reduce两个函数编程实现基本的并行计算任务,提供了抽象的操作和并行编程接口,以简单方便地完成大规模数据的编程和计算处理Raft 是一种为了管理复制日志的一致性算法。它提供了和 Paxos 算法相同的功能和性能,但是它的算法结构和 Paxos 不同,使得 Raft 算法更加容易理解并且更容易构建实际的系统。为了提升可理解性,Raft 将一致性算法分解成了几个关键模块,例如leader人选举、日志复制和安全性。同时它通过实施一个更强的一致性来减少需要考虑的状态的数量。从一个用户研究的结果可以证明,对于学生而言,Raft 算法比 Paxos 算法更加容易学习。Raft 算法还包括一个新的机制来允许集群成员的动态改变,它利用重叠的大多数来保证安全性。 一致性算法允许一组机器像一个整体一样工作,即使其一些机器出现故障也能够继续工作下去。正因为如此,一致性算法在构建可信赖的大规模软件系统扮演着重要的角色。在过去的 10 年里,Paxos 算法统治着一致性算法这一领域:绝大多数的实现都是基于 Paxos 或者受其影响。同时 Paxos 也成为了教学领域里讲解一致性问题时的示例。 但是不幸的是,尽管有很多工作都在尝试降低它的复杂性,但是 Paxos 算法依然十分难以理解。并且,Paxos 自身的算法结构需要进行大幅的修改才能够应用到实际的系统。这些都导致了工业界和学术界都对 Paxos 算法感到十分头疼。 和 Paxos 算法进行过努力之后,我们开始寻找一种新的一致性算法,可以为构建实际的系统和教学提供更好的基础。我们的做法是不寻常的,我们的首要目标是可理解性:我们是否可以在实际系统定义一个一致性算法,并且能够比 Paxos 算法以一种更加容易的方式来学习。此外,我们希望该算法方便系统构建者的直觉的发展。不仅一个算法能够工作很重要,而且能够显而易见的知道为什么能工作也很重要。 Raft 一致性算法就是这些工作的结果。在设计 Raft 算法的时候,我们使用一些特别的技巧来提升它的可理解性,包括算法分解(Raft 主要被分成了leader人选举,日志复制和安全三个模块)和减少状态机的状态(相对于 Paxos,Raft 减少了非确定性和服务器互相处于非一致性的方式)。一份针对两所大学 43 个学生的研究表明 Raft 明显比 Paxos 算法更加容易理解。在这些学生同时学习了这两种算法之后,和 Paxos 比起来,其 33 个学生能够回答有关于 Raft 的问题。 Raft 算法在许多方面和现有的一致性算法都很相似(主要是 Oki 和 Liskov 的 Viewstamped Replication),但是它也有一些独特的特性: 强leader:和其他一致性算法相比,Raft 使用一种更强的leader能力形式。比如,日志条目只从leader发送给其他的服务器。这种方式简化了对复制日志的管理并且使得 Raft 算法更加易于理解。leader选举:Raft 算法使用一个随机计时器来选举leader。这种方式只是在任何一致性算法都必须实现的心跳机制上增加了一点机制。在解决冲突的时候会更加简单快捷。成员关系调整:Raft 使用一种共同一致的方法来处理集群成员变换的问
# 基于Mapreduce的KNN实现 ## 项目介绍 - 该项目实现KNN算法在Hadoop平台基于***欧拉距离***,***加权欧拉距离***,***高斯函数***的MapReduce实现。 - 特色或创意:在网上KNN实现的例子上添加了基于***欧拉距离***,***加权欧拉距离***,***高斯函数***的实现。 - 解决的问题来自[http://archive.ics.uci.edu/ml/datasets/Iris](http://archive.ics.uci.edu/ml/datasets/Iris)。 使用的是著名的鸢尾花数据集。据集内包含 3 类共 150 条记录,每类各 50 个数据,每条记录都有 4 项特征:花萼长度、花萼宽度、花瓣长度、花瓣宽度,可以通过这4个特征预测鸢尾花卉属于(iris-setosa, iris-versicolour, iris-virginica)的哪一品种。 训练集数据为:属性值1,属性值2,.......,标签 测试集数据为:属性值1,属性值2,......., 正确标签 -------- 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! <项目介绍> 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------

20,810

社区成员

发帖
与我相关
我的任务
社区描述
Hadoop生态大数据交流社区,致力于有Hadoop,hive,Spark,Hbase,Flink,ClickHouse,Kafka,数据仓库,大数据集群运维技术分享和交流等。致力于收集优质的博客
社区管理员
  • 分布式计算/Hadoop社区
  • 涤生大数据
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧