[英]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.