Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
UDF scala spark语法_Scala_Apache Spark_User Defined Functions - Fatal编程技术网

UDF scala spark语法

UDF scala spark语法,scala,apache-spark,user-defined-functions,Scala,Apache Spark,User Defined Functions,我试着在spark中使用UDF,注意到有三种不同的方式来声明UDF,从Scala语法的角度来看,每种声明意味着什么,一个UDF函数如何以三种不同的方式访问,从java开发人员的角度来看,最后一种是直接的,但前两种并不清楚。我现在有点困惑 // You could define UDF this way val upperUDF1 = udf { s: String => s.toUpperCase } // or this way val upperUDF2 = udf[String,

我试着在spark中使用UDF,注意到有三种不同的方式来声明UDF,从Scala语法的角度来看,每种声明意味着什么,一个UDF函数如何以三种不同的方式访问,从java开发人员的角度来看,最后一种是直接的,但前两种并不清楚。我现在有点困惑

// You could define UDF this way
val upperUDF1 = udf { s: String => s.toUpperCase }

// or this way
val upperUDF2 = udf[String, String](_.toUpperCase)

//or even this way!
def upperUDF3 = udf((data: String) => data.toUpperCase )

谢谢@RameshMahrjan,读了一些书后,我发现我们可以使用大括号或圆括号,它们可以互换。因此,据我所知,UDF函数被定义为接受泛型值,因此我们可以使用类型参数来调用它。

您对各种方法的看法是正确的,我更喜欢使用以下一种方法,这对我来说非常有效:

val removeBrackets = udf{(input_str:String) =>
    if(input_str != null && (input_str.contains("[") == true || input_str.contains("]") == true) ) {
      input_str.replaceAll("[\\[\\]]","")
    } else {
        input_str
    }
}

第一个和第三个没有区别。第二个不同之处在于使用了类型参数hanks@RameshMahrjan