【发布时间】:2018-03-16 03:02:02
【问题描述】:
我需要计算两个特征列之间的平方距离 火花数据框。当我运行以下代码时
val udf_dist = funcs.udf((x:DenseVector, y:DenseVector) => Vectors.sqdist(x,y))
val df6 = df5.withColumn("dist", udf_dist(funcs.col("features"),
funcs.col("features2")))
我收到错误
名称:org.apache.spark.sql.AnalysisException
消息:无法解决 'UDF(features, features2)' 由于数据类型不匹配:参数 1 需要向量类型,但是,'features' 是向量类型。 参数 2 需要向量类型,但是,'features2' 是向量 输入。
我的数据框的架构是
root
|-- id: long (nullable = false)
|-- features: vector (nullable = true)
|-- id2: long (nullable = false)
|-- features2: vector (nullable = true)
另外,下面的代码运行良好
val v1: org.apache.spark.mllib.linalg.Vector = Vectors.dense(5)
val v2: org.apache.spark.mllib.linalg.Vector = Vectors.dense(5)
Vectors.sqdist(v1, v2)
为什么会出现这个错误?
【问题讨论】:
标签: apache-spark apache-spark-sql