一.引言
Spark 使用 RDD 调用 Filter 函数时,dirver 端卡住,报错 ReturnStatementInClosureException: Return statements aren't allowed in Spark closures,即闭包内无法使用 return 函数:
编辑
二.使用场景
使用 rdd.filter 方法过滤 id 时使用了 return 方法,导致上述报错:
rdd.filter(arr => { val id = arr(0) val l = id.length() if (l <= 8) return false if (id.startsWith("1")) { true } else { false } })
修改方案:
闭包函数内不使用 return 关键字即可
rdd.filter(arr => { val id = arr(0) val l = id.length() if (l <= 8) { false } else if (id.startsWith("1")) { true } else { false } })