【发布时间】:2020-06-22 12:50:55
【问题描述】:
我有以下有效的代码。
val locList = Source.fromInputStream(getClass.getResourceAsStream("/locations.txt")).getLines().toList
def locCheck(col: String): Boolean = locList.contains(col)
def locUDF = udf[Boolean, String](locCheck)
但是当我添加一个toUpperCase 来实现它时
val locList = Source.fromInputStream(getClass.getResourceAsStream("/locations.txt")).getLines().toList
def locCheck(col: String): Boolean = locList.contains(col.toUpperCase)
def locUDF = udf[Boolean, String](locCheck)
我遇到了由java.lang.NullPointerException引起的Failed to execute user defined function
我使用 udf 作为df.filter(locUDF('location)).count()
我在这里做错了什么,我该如何解决?
【问题讨论】:
-
你能分享你使用udf函数的完整代码吗?
-
@koiralo 我已经添加了调用 udf 的代码
-
确保
location列中没有空值,如果location为空,那么col 为空并在col.toUpperCase中抛出NPE -
@koiralo,我确实有空值。我该如何处理它们?
标签: scala apache-spark