Spark-ReturnStatementInClosureException:Sparkクロージャではreturnステートメントは許可されていません

I.はじめに

SparkがRDDを使用してFilter関数を呼び出すと、ドライバー側がスタックし、エラーReturnStatementInClosureExceptionを報告します。Sparkクロージャーではreturnステートメントは許可されていません。つまり、クロージャーではreturn関数を使用できません。

2.使用シナリオ

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

おすすめ

転載: blog.csdn.net/BIT_666/article/details/123801345