您好我试图插入元件RDD阵列[字符串]使用阶火花。如何插入元件在火花RDD阵列
这里是一个例子。
val data = RDD[Array[String]] = Array(Array(1,2,3), Array(1,2,3,4), Array(1,2)).
我想使这个数据中所有数组的长度为4。
如果数组的长度小于4,I要填充的阵列中的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),())
。
所以,我想其他办法。我在for循环中使用了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)).
我应该怎么办? 有没有办法解决它?
我很欣赏您的意见! 非常感谢! 我会试试! –