Как запустить колонку сходства после RDD groupBy - PullRequest
0 голосов
/ 05 июля 2018

Я использовал KMeans, чтобы разделить свои элементы на наборы кластеров, а затем внутри каждого кластера я бы хотел вычислить косинусное сходство. К сожалению, IndexedRowMatrix принимает только RDD, и, насколько мне известно, запустить RDD внутри другого RDD

невозможно.
val df =   ...
val kmeans = new KMeans().setK(10).setSeed(1L)
val model: KMeansModel = kmeans.fit(df)
val predictions = model.transform(df)

val clusters = predictions.groupByKey(row => row.getInt(0))
clusters.mapGroups {

  case (key, cluster) =>
    ...
    val indexedRowMatrix = new IndexedRowMatrix(....) // How to pass an RDD to build IndexedRowMatrix
    indexedRowMatrix.toBlockMatrix().transpose.toIndexedRowMatrix().columnSimilarities()
}

Есть идеи, как вычислить косинусное сходство после группировки по ключу?

...