У меня есть данные в следующем формате:Спарк проблема преобразования РДД
Я использую следующий код, чтобы загрузить его:
val data : RDD[(String, Array[Int])] = sc.textFile("data.txt").map(line => ((line.split("\t"))(0), (line.split("\t"))(1).split(" ").map(_.toInt)))
Я хочу, чтобы генерировать пар из Array [Int], так что элемент массива со значением больше числа (2 в следующем коде) соединяется со всеми другими элементами массива. Затем я буду использовать это для создания дополнительных статистических данных. Например, с данными образца я должен был бы сгенерировать это сначала:
100 (3,1), (3,2), (3,4), (3,5), (4,1) , (4,2), (4,3), (4,5)
val test = merged_data.mapValues { case x =>
for (element <- x) {
val y = x.filter(_ != element)
if (element > 2)
{
for (yelement <- y)
{
(element, yelement)
}
}
}
}
Вот о/р, что я получаю: Массив [(String, единицы)] = Array ((100 ,())) Не знаете, почему он пуст.
После того, как я могу решить эту проблему, я буду тогда сортировать элементы в кортеже и удалить дубликаты, если любой так выше о/р
100 (3,1), (3,2), (3,4), (3,5), (4,1), (4,2), (4,3), (4,5)
становится этим:
100 (1,3), (2,3), (3,4), (3,5), (1,4), (2,4), (4,5)
Вы ничего не делаете с этим StringBuilder? –