2016-04-27 14 views
1

spark MLlib-kmeansを使用して製品データセットをクラスタリングしようとしています。しかし、私の最初の列、つまりIDはY400sX902で始まり、以下のコードを実行するとNumberFormatExceptionというエラーがスローされます。私はこの技術が初めてで、手助けする指針があれば素晴らしいだろう。ありがとう。java.lang.NumberFormatException:入力文字列:Y400sX902:Spark Kmeansを使用中

object KMeansExmp { 

def main(args: Array[String]) { 

val conf = new SparkConf().setMaster("local[1]").setAppName("KmeansApp"); 
val sc = new SparkContext(conf); 

val rawData = sc.textFile("/Users/Downloads/data.csv") 
val header = rawData.first 

val rows = rawData.filter(l => l != header) 

val extractedFeatureVector = rows.map { row => Vectors.dense(row.split(',').map(_.toDouble).slice(2, 5)) } 


val numberOfClusters = 3 
val numberOfInterations = 50 

val model = KMeans.train(extractedFeatureVector, numberOfClusters, numberOfInterations) 

model.clusterCenters.foreach(println) 

} 

エラー:

java.lang.NumberFormatException: For input string: ""Y400sX902"" 
    at   sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1250) 
    at java.lang.Double.parseDouble(Double.java:540) 
    at scala.collection.immutable.StringLike$class.toDouble(StringLike.scala:232) 
    at scala.collection.immutable.StringOps.toDouble(StringOps.scala:31) 
    at KMeansExmp$$anonfun$2$$anonfun$apply$1.apply(KMeansExmp.scala:22) 
    at KMeansExmp$$anonfun$2$$anonfun$apply$1.apply(KMeansExmp.scala:22) 
    at ........ 

答えて

0

val rows = rawData.drop(1) 

代わりの最初の行(すなわち、非数値ヘッダ)を除去する全体RDDをフィルタリングしてみてください。

関連する問題