2016-06-21 34 views
2

私はスパーク1.6.1でParamGridBuilderを使用しているときscala.MatchErrorを取得し、2.0い線形回帰scala.MatchError:

val paramGrid = new ParamGridBuilder() 
    .addGrid(lr.regParam, Array(0.1, 0.01)) 
    .addGrid(lr.fitIntercept) 
    .addGrid(lr.elasticNetParam, Array(0.0, 0.5, 1.0)) 
    .build() 

エラーが問題がある

org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 57.0 failed 1 times, most recent failure: Lost task 0.0 in stage 57.0 (TID 257, localhost): 
scala.MatchError: [280000,1.0,[2400.0,9373.0,3.0,1.0,1.0,0.0,0.0,0.0]] (of class org.apache.spark.sql.catalyst.expressions.GenericRowWithSchema) 

Full code

ですこの場合、ParamGridBuilderをどのように使うべきか

答えて

3

問題は入力スキーマではないParamGridBuilder。価格列は整数としてロードされますが、LinearRegressionは2倍を期待しています。あなたは、明示的に必要なタイプに列をキャストすることによってそれを修正することができます:

val houses = sqlContext.read.format("com.databricks.spark.csv") 
    .option("header", "true") 
    .option("inferSchema", "true") 
    .load(...) 
    .withColumn("price", $"price".cast("double")) 
+0

おかげで、元の例から、彼らはどういたしまして – oluies

+0

を倍にキャストする理由にはコメントがなかったので、ことを逃しました。ジョブの途中で例外をスローしないようにスキーマに基づいて検証する必要があります。残念ながら、MLはこのような不具合でいっぱいです。 – zero323

+1

働くと思われるhttps://databricks-prod-cloudfront.cloud.databricks.com/public/4027ec902e239c93eaaa8714f173bcfc/1221303294178191/1275177332049116/6190062569763605/latest.html – oluies