当前位置: 首页 > 知识库问答 >
问题:

类在KmeanClustering中找不到异常--Mahout

杜英范
2023-03-14

嗨,我正在尝试运行来自Github的SimpleKmeanClustering代码,看看集群是如何工作的,我可以在我的windows Eclipse上编译这些代码。

我对我的项目做了一个jar,我想在一个单节点Hadoop集群(CHD-4.2.1)上运行它,并在上面安装mahout。mahout示例在该集群上运行良好,因此没有安装方面的问题。

我使用command Promt中的以下命令来运行我的jar,我不确定我的尝试是否正确。

User@INFPH01463U:~$mahout jar/home/user/apurv/kmean.jar tryout.SimplekMeansClustering

我得到了相应的错误

下面是我正在使用的代码:

代码

package tryout;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.SequenceFile;
import org.apache.hadoop.io.Text;
import org.apache.mahout.math.RandomAccessSparseVector;
import org.apache.mahout.math.Vector;
import org.apache.mahout.math.VectorWritable;
import org.apache.mahout.clustering.kmeans.Kluster;
import org.apache.mahout.clustering.classify.WeightedVectorWritable;
import org.apache.mahout.clustering.kmeans.KMeansDriver;
import org.apache.mahout.common.distance.EuclideanDistanceMeasure;

public class SimpleKMeansClustering {
    public static final double[][] points = { {1, 1}, {2, 1}, {1, 2}, 
                                              {2, 2}, {3, 3}, {8, 8},
                                              {9, 8}, {8, 9}, {9, 9}};    


    public static void writePointsToFile(List<Vector> points,
            String fileName,FileSystem fs,Configuration conf) throws IOException {    
        Path path = new Path(fileName);    
        @SuppressWarnings("deprecation")
        SequenceFile.Writer writer = new SequenceFile.Writer(fs, conf,path, LongWritable.class, VectorWritable.class);    

        long recNum = 0;    
        VectorWritable vec = new VectorWritable();    
        for (Vector point : points) {       
         vec.set(point);      
          writer.append(new LongWritable(recNum++), vec);    
        }    writer.close();  
    }    

    public static List<Vector> getPoints(double[][] raw) {    
        List<Vector> points = new ArrayList<Vector>();    
        for (int i = 0; i < raw.length; i++) {      
            double[] fr = raw[i];      
            Vector vec = new RandomAccessSparseVector(fr.length);      
            vec.assign(fr);      
            points.add(vec);    
        }    
        return points;  
    }    
    public static void main(String args[]) throws Exception {        
        int k = 2;        
        List<Vector> vectors = getPoints(points);        
        File testData = new File("testdata");    
        if (!testData.exists()) {      
            testData.mkdir();    
        }    
        testData = new File("testdata/points");    
        if (!testData.exists()) {      
            testData.mkdir();    
        }        
        Configuration conf = new Configuration();    
        FileSystem fs = FileSystem.get(conf);    
        writePointsToFile(vectors, "testdata/points/file1", fs, conf);        
        Path path = new Path("testdata/clusters/part-00000");    
        @SuppressWarnings("deprecation")
        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(cluster.getIdentifier()), cluster);    
        }    
        writer.close();        

        KMeansDriver.run(conf, new Path("testdata/points"), new Path("testdata/clusters"),      
                new Path("output"), new EuclideanDistanceMeasure(), 0.001, 10,
                true,0.0, false);        
        @SuppressWarnings("deprecation")
        SequenceFile.Reader reader = new SequenceFile.Reader(fs,new Path("output/" + Kluster.CLUSTERED_POINTS_DIR+ "/part-m-00000"), conf);        
        IntWritable key = new IntWritable();   
        WeightedVectorWritable value = new WeightedVectorWritable();    
        while (reader.next(key, value)) {      
            System.out.println(value.toString() + " belongs to cluster " + key.toString());    
        }    
        reader.close();  
    }
}

有没有人能为我指点一下...

共有1个答案

鲍飞星
2023-03-14

我认为该命令应该读mahout kmeans,而不是mahout jar

https://cwiki.apache.org/mahout/k-means-clustering.html

 类似资料:
  • 对于一个项目,我试图实现JSCSSMergeServlet servlet。 在完全按照说明并通过Maven启动Jetty之后 我得到一个错误的说法: 是否有一些其他文件我需要修改,以便使这个启动和运行?

  • 问题内容: 我从这篇博客文章中获得了帮助: 但是我发现com.mysql.jdbc.driver类未找到异常。那篇博客文章的不同之处在于,在我的案例中,他们尝试连接到mysql而不是MS SQL。到目前为止,这是我的代码:package com.example.dbtry; 请告诉我我在做什么错。我还在清单中添加了对Internet的许可。 问题答案: 从以下位置下载jar:http://www.

  • 我对Java和Netbeans平台编程非常熟悉,我在10个Netbeans API(文件系统)的示例中遇到了这个非常奇怪的问题。我使用的是Ubuntu 14.10,Java JDK 8,Netbeans 8.0.1 我想在点击菜单元素后在swing消息框中显示一些数据。导入很好,dep库很好,所有编译都很好。但当我点击我的超级菜单项时,我有例外: 我试图导入所有javax.spring.*包,但它

  • 当我试图运行测试套件时,在Mac上遇到了这个异常,我们在这里使用的是maven项目,今天早上eclipse挂起了,我强制退出,然后重新启动了同样的测试,但后来无法运行测试。我做了刷新、清理、重新安装testNG、用新的eclipse实例重新配置eclipse并导入maven项目,但却得到了同样的异常。相同的maven项目将在其他Mac上运行,请建议这里缺少的任何方法。

  • 我见过类似的问题,但都与maven有关(我没有使用maven)。我在运行intellij并拥有Junit。jar 4.12已添加到库中。我可以创建测试方法和类。 问题是,当我尝试运行TestRunner()main方法时,立即出现以下错误 代码如下所示: 让我困惑的是,我在eclipse中使用了完全相同的代码(用于之前的项目测试),并且在那里工作得非常好。我错过了什么? 关闭和重新启动intell

  • 问题内容: 我从这篇博客文章中获得了帮助: 但是我发现com.mysql.jdbc.driver类未找到异常。那篇博客文章的不同之处在于,在我的案例中,他们尝试连接到mysql而不是MS SQL。到目前为止,这是我的代码:package com.example.dbtry; 请告诉我我在做什么错。我还在清单中添加了对Internet的许可。 问题答案: 从以下位置下载jar:http://www.