Итак, у меня есть rdd: Array [String] с именем Adat, и я хочу преобразовать его в цикле и получить новое RDD, которое я могу использовать вне области цикла. Я пробовал это, но результат не то, что я хочу.Преобразование RDD внутри цикла
val sharedA = {
for {
i <- 0 to shareA.toInt - 1
j <- 0 to shareA.toInt - 1
} yield {
Adat.map(x => (x(1).toInt, i % shareA.toInt, j % shareA.toInt, x(2)))
}
}
Приведенный выше код преобразует SharedA рдд в IndexedSeq [РДУ [(Int, Int, Int, String)]], и когда я пытаюсь напечатать его результат является:
MapPartitionsRDD[12] at map at planet.scala:99
MapPartitionsRDD[13] at map at planet.scala:99 and so on.
Как преобразовать sharedA в RDD[(Int, Int, Int, String)]
?
Если я делаю это так, у sharedA есть правильный тип данных, но я не могу использовать его вне области видимости.
for { i <- 0 to shareA.toInt -1
j<-0 to shareA.toInt-1 }
yield {
val sharedA=Adat.map(x => (x(1).toInt,i % shareA.toInt ,j %
shareA.toInt,x(2)))
}
Я не» t понять, что является точкой вашего кода :('i% shareA.toInt',' j% shareA.toInt' должен быть просто равен 'i' и' j' соответственно и является единственным изменяющимся элементом. Не могли бы вы предоставить пример ввода и ожидаемого результата. – zero323
shareA уже вычисляется и рассматривает его как маленькое целое число, но его значение не имеет значения, скажем, что RDD Adat в начале имеет некоторые данные, разделенные запятой, с помощью цикла, который я хочу добавить с картой, больше данных, используя i и j и я хочу получить результат к новому RDD, который я мог бы использовать вне области видимости. –