ScalaSpark-无法在“ DataFrame.foreach”循环内更新Array [Int]的元素。它只在循环中改变

时间:2019-05-24 01:34:38

标签: scala apache-spark

Array [Int]的元素更新仅在“ foreach”循环内有效

当退出循环时,数组返回到初始状态(在我的情况下为0)

我尝试了var和val两者..但是似乎没有用 但是奇怪的是,当我在循环中打印出一些日志时,会打印出更新的元素。

val df = DataFrame(columns : (a,b,c,d,e,f,g,h) ) 
//just an example, also has some null value

var arr = Array.fill[Int](df.columns.length)(0) // 8
print(arr)
// arr = (0,0,0,0,0,0,0,0)

df.foreach( x => {
var i = 0
while(i < df.columns.length) {
if(x.isNullAt(i) == true) arr(i) += 1
i++
}})

print(arr)
// arr = (0,0,0,0,0,0,0,0) <== ?????

(可能在语法上是错误的且效率低下,但是没关系。我只想向您展示一种情况)

循环前=> arr(0,0,0,0,0,0,0,0) afterloop => arr(0,0,0,0,0,0,0,0) 我想念这里吗? :(

0 个答案:

没有答案