在循环DataFrame和访问外部范围变量时获取NullPointerException

时间:2018-06-24 08:17:32

标签: scala apache-spark apache-spark-sql

好的,我想迭代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。谁能解释为什么会这样?

0 个答案:

没有答案