好的,我想迭代DataFrame并使用外部作用域DataFrame变量操作每一行,但是当我访问外部变量时,我得到了NullPointerException。这是我的代码
val outer: DataFrame = ...
val someDataFrame: DataFrame = ...
someDataFrame.foreach(row => {
outer.show()
})
// this occurs java.lang.NullPointerException
这是另一种情况
val outer: DataFrame = ...
val someDataFrame: DataFrame = ...
for(each <- someDataFrame) {
outer.show()
}
// this occurs java.lang.NullPointerException
但可用于循环列表
val outer: DataFrame = ...
val list = List(1,2,3,4,5)
list.foreach(each => {
outer.show()
})
// this prints outer 5 times
在这种情况下也可以使用
val x = 1
val someDataFrame: DataFrame = ...
someDataFrame.foreach(row => {
println(x)
})
// 1
我正在使用scala 2.11和spark 2.3.0,似乎只访问外部作用域DataFrame会发生NullPointerException。谁能解释为什么会这样?