Spark - ReturnStatementInClosureException: Return statements aren‘t allowed in Spark closures

简介: Spark 使用 RDD 调用 Filter 函数时,dirver 端卡住,报错 ReturnStatementInClosureException: Return statements aren't allowed in Spark closures,即闭包内无法使用 return 函数。

 一.引言

Spark 使用 RDD 调用 Filter 函数时,dirver 端卡住,报错 ReturnStatementInClosureException: Return statements aren't allowed in Spark closures,即闭包内无法使用 return 函数:

image.gif编辑

二.使用场景

使用 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
       }
     })

image.gif

修改方案:

闭包函数内不使用 return 关键字即可

rdd.filter(arr => {
        val id = arr(0)
        val l = id.length()
        if (l <= 8) {
            false
        } else if (id.startsWith("1")) {
            true
        } else {
            false
        }
    })

image.gif


目录
相关文章
|
6月前
|
分布式计算 安全 Java
Spark 编译出现 InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
Spark 编译出现 InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
170 0
|
SQL
Parameter ‘id‘ not found. Available parameters are [collection, list]
Parameter ‘id‘ not found. Available parameters are [collection, list]
236 0
|
C++
Reference Parameter
Reference Parameter(引用参数)是一种 C++ 编程语言中的参数传递方式。它允许将一个变量的引用(而不是副本)作为函数参数传递。引用参数的主要优点是可以避免在函数内部对实参进行拷贝操作,从而提高代码的效率。
80 1
|
SQL 存储 安全
PageHelper不安全的分页问题,导致ParserException: syntax error, error in :&#39;it 1 LIMIT ? &#39;, expect LIMIT, actual ...
PageHelper不安全的分页问题,导致ParserException: syntax error, error in :&#39;it 1 LIMIT ? &#39;, expect LIMIT, actual ...
186 0
|
分布式计算 Java Spark
Optimizing Spark job parameters
Optimizing Spark job parameters
262 0
params argument given to the optimizer should be an iterable
params argument given to the optimizer should be an iterable
184 0
params argument given to the optimizer should be an iterable
成功解决TypeError: Value passed to parameter 'paddings' has DataType float32 not in list of allowed valu
成功解决TypeError: Value passed to parameter 'paddings' has DataType float32 not in list of allowed valu