簡體   English   中英

轉換錯誤:將 ArrayType(DoubleType,true) 轉換為 DoubleType

[英]cast error :cast ArrayType(DoubleType,true) to DoubleType

我有包含 id,features 的鑲木地板文件。當我使用轉換錯誤時在此處輸入圖片說明

將 ArrayType(DoubleType,true) 轉換為 DoubleType

val training = spark.read.parquet("/usr/local/spark/dataset/data/user")
 val df = training.selectExpr("cast(id as int) id","cast(features as double) features")
 val assembler = new VectorAssembler().setInputCols(Array("features" )).setOutputCol("feature")
 val data = assembler.transform(df)

出現這個錯誤

cannot resolve 'CAST(`features` AS DOUBLE)' due to data type mismatch: cannot cast ArrayType(DoubleType,true) to DoubleType; line 1 pos 0;

如何解決?

出現編輯錯誤后

java.lang.ClassCastException: scala.collection.mutable.WrappedArray$ofRef 不能轉換為 [D

“功能”列包含 DoubleType 數組,因此無法將其轉換為 DoubleType。 您可以使用Vectors.dense將此列轉換為 Vector。 然后在包含 double 和 vector 的列上使用VectorAssembler

就像是,

val training = spark.read.parquet("/usr/local/spark/dataset/data/user")
 val df = training.map{ r =>
   (Vectors.dense(r.getAs[Array[Double]]("features")),r.getAs[Double]("id"))
  }.toDF("features","id")
 val assembler = new VectorAssembler().setInputCols(Array("features" )).setOutputCol("feature")
 val data = assembler.transform(df)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM