2015-10-22 1 views
0

Je suis un débutant à Apache Hadoop et jusqu'à présent, j'ai effectué le problème de nombre de mots en utilisant mapReduce à des fins d'apprentissage. Mon objectif est d'effectuer un clustering K-means sur un ensemble de données dites 1.5gig +.Comment utiliser K-means avec Apache Hadoop?

Quelle est la manière la plus simple d'effectuer un clustering K-means à l'aide de Hadoop? Dois-je modifier ma carte et réduire les fonctions en fonction des exigences de K-means ou dois-je exiger Mahout (je ne l'ai pas utilisé auparavant), ou l'objectif peut-il être atteint sans cela?

Le système d'exploitation hôte est Win7 et j'ai installé HortonWorks Sandbox 2.3 sur VirtualBox. Toute aide serait très appréciée car je suis un peu confus quant à la voie à choisir pour atteindre mon objectif. Merci d'avance.

Répondre

0

Je pense que la manière la plus facile de faire k signifie K-MOINS. Étincelle en utilisant hadoop hdfs.

Apache Spark

Voici examplea e détails que vous pouvez trouver à partir du site d'allumage

public class KMeansExample { 
    public static void main(String[] args) { 
    SparkConf conf = new SparkConf().setAppName("K-means Example"); 
    JavaSparkContext sc = new JavaSparkContext(conf); 

    // Load and parse data 
    String path = "data/mllib/kmeans_data.txt"; 
    JavaRDD<String> data = sc.textFile(path); 
    JavaRDD<Vector> parsedData = data.map(
     new Function<String, Vector>() { 
     public Vector call(String s) { 
      String[] sarray = s.split(" "); 
      double[] values = new double[sarray.length]; 
      for (int i = 0; i < sarray.length; i++) 
      values[i] = Double.parseDouble(sarray[i]); 
      return Vectors.dense(values); 
     } 
     } 
    ); 
    parsedData.cache(); 

    // Cluster the data into two classes using KMeans 
    int numClusters = 2; 
    int numIterations = 20; 
    KMeansModel clusters = KMeans.train(parsedData.rdd(), numClusters, numIterations); 

    // Evaluate clustering by computing Within Set Sum of Squared Errors 
    double WSSSE = clusters.computeCost(parsedData.rdd()); 
    System.out.println("Within Set Sum of Squared Errors = " + WSSSE); 

    // Save and load model 
    clusters.save(sc.sc(), "myModelPath"); 
    KMeansModel sameModel = KMeansModel.load(sc.sc(), "myModelPath"); 
    } 
}