Исходные данные у меня есть выглядит следующим образом:Transform RDD в RowMatrix для PCA
РДД данных:
key -> index
1 -> 2
1 -> 3
1 -> 5
2 -> 1
2 -> 3
2 -> 4
Как я могу преобразовать RDD в следующем формате?
key -> index1, index2, index3, index4, index5
1 -> 0,1,1,0,1
2 -> 1,0,1,1,0
Мой текущий метод:
val vectors = filtered_data_by_key.map(x => {
var temp = Array[AnyVal]()
x._2.copyToArray(temp)
(x._1, Vectors.sparse(filtered_key_size, temp.map(_.asInstanceOf[Int]), Array.fill(filtered_key_size)(1)))
})
я получил какую-то странную ошибку:
org.apache.spark.SparkException: Job aborted due to stage failure: Task 3 in stage 54.0 failed 1 times, most recent failure: Lost task 3.0 in stage 54.0 (TID 75, localhost): java.lang.IllegalArgumentException: requirement failed
Когда я пытаюсь отлаживать эту программу, используя следующий код:
val vectors = filtered_data_by_key.map(x => {
val temp = Array[AnyVal]()
val t = x._2.copyToArray(temp)
(x._1, temp)
})
Я нашел, что temp пуст, поэтому проблема находится в copyToArray()
.
Я не уверен, как это решить.
Что в этом плохого? –
метод copyToArray требует, чтобы temp был типом AnyVal, после того, как я преобразовал temp в AnyVal и вызвал copyToarray, результат пуст –