I ', пытаясь построить модуль искры mllib локально после редактирования кода в одном из классов.Модифицировать и построить искро-mllib локально
Я прочитал это решение: How to build Spark Mllib submodule individually Но когда я создаю модуль, используя Maven, результат .jar
подобен версии в хранилище и класс не мой код.
Я модифицировал класс BisectingKmeans.scala
, потому что одно из исправлений, сделанных в однопользовательском запросе github https://github.com/apache/spark, не находится в последнем выпуске струи.
версия Я пытаюсь построить:
mllib 2.11
spark: 2.1.0
мне нужно изменить BisectingKameans.scala
класс от этого:
/**
* Updates assignments.
* @param assignments current assignments
* @param divisibleIndices divisible cluster indices
* @param newClusterCenters new cluster centers
* @return new assignments
*/
private def updateAssignments(
assignments: RDD[(Long, VectorWithNorm)],
divisibleIndices: Set[Long],
newClusterCenters: Map[Long, VectorWithNorm]): RDD[(Long, VectorWithNorm)] = {
assignments.map { case (index, v) =>
if (divisibleIndices.contains(index)) {
val children = Seq(leftChildIndex(index), rightChildIndex(index))
val selected = children.minBy { child =>
KMeans.fastSquaredDistance(newClusterCenters(child), v)
}
(selected, v)
} else {
(index, v)
}
}
}
Для этого:
/**
* Updates assignments.
* @param assignments current assignments
* @param divisibleIndices divisible cluster indices
* @param newClusterCenters new cluster centers
* @return new assignments
*/
private def updateAssignments(
assignments: RDD[(Long, VectorWithNorm)],
divisibleIndices: Set[Long],
newClusterCenters: Map[Long, VectorWithNorm]): RDD[(Long, VectorWithNorm)] = {
assignments.map { case (index, v) =>
if (divisibleIndices.contains(index)) {
val children = Seq(leftChildIndex(index), rightChildIndex(index))
val newClusterChildren = children.filter(newClusterCenters.contains(_))
if (newClusterChildren.nonEmpty) {
val selected = newClusterChildren.minBy { child =>
KMeans.fastSquaredDistance(newClusterCenters(child), v)
}
(selected, v)
} else {
(index, v)
}
} else {
(index, v)
}
}
}
и строить. Но я не знаю, как это сделать.