Hadoop 无法在Mahout中实例化类型Cluster、KMean集群示例

Hadoop 无法在Mahout中实例化类型Cluster、KMean集群示例,hadoop,compiler-errors,mahout,k-means,Hadoop,Compiler Errors,Mahout,K Means,您好,我试图在Mahout中运行KmeanClustering示例,但被示例代码中的错误绊住了。我在下面的代码snipet中遇到错误 Cluster Cluster=new Cluster(vec,i,new euclideandstancemeasure()) 它给出了一个错误 无法实例化类型群集 (据我所知,这是一个接口)。我想在我的示例数据集上运行kmeans,有人能指导我吗 我在EclipseIDE中包括了以下JAR mahout-math-0.7-cdh4.3.0.jar hadoop

您好,我试图在Mahout中运行KmeanClustering示例,但被示例代码中的错误绊住了。我在下面的代码snipet中遇到错误

Cluster Cluster=new Cluster(vec,i,new euclideandstancemeasure())

它给出了一个错误

无法实例化类型群集

(据我所知,这是一个接口)。我想在我的示例数据集上运行kmeans,有人能指导我吗

我在EclipseIDE中包括了以下JAR

mahout-math-0.7-cdh4.3.0.jar

hadoop-common-2.0.0-cdh4.2.1.jar

hadoop-hdfs-2.0.0-cdh4.2.1.jar

hadoop-mapreduce-client-core-2.0.0-cdh4.2.1.jar

mahout-core-0.7-cdh4.3.0.jar

检查我是否缺少任何必要的jar,我将在Hadoop CDH4.2.1上运行它

这里附上我的全部代码,摘自

套餐试用;
导入java.io.File;
导入java.io.IOException;
导入java.util.ArrayList;
导入java.util.List;
导入org.apache.hadoop.conf.Configuration;
导入org.apache.hadoop.fs.FileSystem;
导入org.apache.hadoop.fs.Path;
导入org.apache.hadoop.io.IntWritable;
导入org.apache.hadoop.io.LongWritable;
导入org.apache.hadoop.io.SequenceFile;
导入org.apache.hadoop.io.Text;
导入org.apache.mahout.math.RandomAccessSparseVector;
导入org.apache.mahout.math.Vector;
导入org.apache.mahout.math.VectorWritable;
导入org.apache.mahout.clustering.Cluster;
导入org.apache.mahout.clustering.classify.WeightedVectorWritable;
导入org.apache.mahout.clustering.kmeans.KMeansDriver;
导入org.apache.mahout.common.distance.EuclideanDistanceMeasure;
公共类SimpleMeansClustering{
公共静态最终双[][]点={{1,1},{2,1},{1,2},
{2, 2}, {3, 3}, {8, 8},
{9, 8}, {8, 9}, {9, 9}};    
公共静态void writePointsToFile(列表点,
字符串文件名、文件系统fs、配置配置)引发IOException{
路径路径=新路径(文件名);
SequenceFile.Writer Writer=新的SequenceFile.Writer(fs,conf,path,LongWritable.class,VectorWritable.class);
long recNum=0;
VectorWritable vec=新的VectorWritable();
对于(向量点:点){
向量设定值(点);
append(新的LongWritable(recNum++),vec);
}writer.close();
}    
公共静态列表getPoints(双[][]原始){
列表点=新的ArrayList();
对于(inti=0;i

另外,如果我有自己的数据集,请指导我如何实现这一点。

我也一直在尝试从《Mahout in Action》一书中找到这个例子。我最终成功了。以下是我所做的:

SequenceFile.Writer writer= new SequenceFile.Writer(fs, conf, path, Text.class, Kluster.class);
for (int i = 0; i < k; i++) {
Vector vec = vectors.get(i);
Kluster cluster = new Kluster(vec, i, new EuclideanDistanceMeasure());
writer.append(new Text(Kluster.getIdentifier()), cluster);
}
SequenceFile.Writer=newsequencefile.Writer(fs、conf、path、Text.class、Kluster.class);
for(int i=0;i
我不敢相信书中的代码是错误的。我还设法让它在不使用maven的情况下工作。我在这里更详细地描述了这一点,但基本上我是通过用户库实现的:

更新:好的,这本书的内容没有错,但是很旧。此页面有指向本书更新代码的链接


如果我没记错的话,您需要类
Kluster
。感谢Thomas我做了更改,现在我可以用正确的类文件和jar文件编译代码了。
SequenceFile.Writer writer= new SequenceFile.Writer(fs, conf, path, Text.class, Kluster.class);
for (int i = 0; i < k; i++) {
Vector vec = vectors.get(i);
Kluster cluster = new Kluster(vec, i, new EuclideanDistanceMeasure());
writer.append(new Text(Kluster.getIdentifier()), cluster);
}