Привет Я попытался вставить элемент в массив rdd [String], используя scala в искры.Как вставить элемент в массив rdd в искровом
Вот пример.
val data = RDD[Array[String]] = Array(Array(1,2,3), Array(1,2,3,4), Array(1,2)).
Я хочу сделать длину 4 из всех массивов в этих данных.
Если длина массива меньше 4, я хочу заполнить значение NULL в массиве.
вот мой код, который я пытался решить.
val newData = data.map(x =>
if(x.length < 4){
for(i <- x.length until 4){
x.union("NULL")
}
}
else{
x
}
)
Но результат Array[Any] = Array((), Array(1, 2, 3, 4),())
.
Так что я попробовал другие способы. Я использовал yield
для цикла.
val newData = data.map(x =>
if(x.length < 4){
for(i <- x.length until 4)yield{
x.union("NULL")
}
}
else{
x
}
)
В результате Array[Object] = Array(Vector(Array(1, 2, 3, N, U, L, L)), Array(1, 2, 3, 4), Vector(Array(1, 2, N, U, L, L), Array(1, 2, N, U, L, L)))
это не то, что я хочу. Я хочу, чтобы вернуться как этот
RDD[Array[String]] = Array(Array(1,2,3,NULL), Array(1,2,3,4), Array(1,2,NULL,NULL)).
Что я должен делать? Есть ли способ его решения?
Я ценю ваше посоветуйте! Большое спасибо! Я попробую! –