2017-10-03 20 views
1

私は2つのベクトルのユークリッド距離を計算しようとしています。私は、次のデータフレームを持っている:スパークのユークリッド距離2.1

root 
|-- h: string (nullable = true) 
|-- id: string (nullable = true) 
|-- sid: string (nullable = true) 
|-- features: vector (nullable = true) 
|-- episodeFeatures: vector (nullable = true) 

import org.apache.spark.mllib.util.{MLUtils} 
val jP2 = jP.withColumn("dist", MLUtils.fastSquaredDistance("features", 5, "episodeFeatures", 5)) 

ので、同様に、私はエラーを取得する:

error: method fastSquaredDistance in object MLUtils cannot be accessed in object org.apache.spark.mllib.util.MLUtils 

は、そのプライベートメソッドにアクセスする方法はありますか?

答えて

3

MLUtilsは内部パッケージであり、そのためでなくてもColumnsまたは(推測バージョン)mlベクターには使用できませんでした。あなた自身でデザインする必要がありますudf

import org.apache.spark.sql.functions._ 
import org.apache.spark.ml.linalg.Vector 

val euclidean = udf((v1: Vector, v2: Vector) => ???) // Fill with preferred logic 

val jP2 = jP.withColumn("dist", euclidean($"features", $"episodeFeatures")) 
関連する問題