用户自定义标量函数(udf)

适用于:检查标记是的砖运行时

用户自定义标量函数(udf)是可编程程序,按照一行。这个文档列出了所需的类创建和注册udf。它还包含示例,演示如何定义和寄存器udf和火花SQL调用它们。

UserDefinedFunction

定义一个用户定义函数的属性,您可以使用这个类中定义的一些方法。

  • asNonNullable (): UserDefinedFunction:更新UserDefinedFunction非空。

  • asNondeterministic (): UserDefinedFunction:更新UserDefinedFunction不确定的。

  • withName(名称:字符串):UserDefinedFunction:更新UserDefinedFunction用给定的名称。

例子

进口orgapache火花sqlSparkSession进口orgapache火花sql功能udf瓦尔火花=SparkSession构建器()浏览器名称(“火花SQL UDF标量榜样”)getOrCreate()/ /定义和注册一个无参数不确定的UDF/ / UDF默认是确定的,即相同的输入产生相同的结果。瓦尔随机=udf(()= >数学随机())火花udf注册(“随机”,随机asNondeterministic())火花sql(“选择随机()”)。显示()/ / + - - - - - - - +/ / | UDF () |/ / + - - - - - - - +/ / | xxxxxxx |/ / + - - - - - - - +/ /定义一个参数UDF和注册瓦尔plusOne=udf((x:Int)= >x+1)火花udf注册(“plusOne”,plusOne)火花sql(“选择plusOne (5)”)。显示()/ / + - - - +/ / | UDF (5) |/ / + - - - +/ / | 6 |/ / + - - - +/ /定义一个双参数UDF用火花在一个步骤并注册它火花udf注册(“strLenScala”,(_:字符串)。长度+(_:Int))火花sql(“选择strLenScala('测试',1)”)。显示()/ / + - - - - - - - - - - - - - - - - - - - - - - +/ / | strLenScala(试验1)|/ / + - - - - - - - - - - - - - - - - - - - - - - +/ / | 5 |/ / + - - - - - - - - - - - - - - - - - - - - - - +/ / UDF WHERE子句火花udf注册(“oneArgFilter”,(n:Int)= >{n>5})火花范围(1,10)。createOrReplaceTempView(“测试”)火花sql(“SELECT *从测试oneArgFilter (id)”)。显示()/ / + - - - +/ / | | id/ / + - - - +/ / | 6 |/ / | 7 |/ / | 8 |/ / | 9 |/ / + - - - +
进口org.apache.spark.sql。*;进口org.apache.spark.sql.api.java.UDF1;进口org.apache.spark.sql.expressions.UserDefinedFunction;静态导入org.apache.spark.sql.functions.udf;进口org.apache.spark.sql.types.DataTypes;SparkSession火花=SparkSession构建器()浏览器名称(“Java火花SQL UDF标量榜样”)getOrCreate();/ /定义和注册一个无参数不确定的UDF/ / UDF默认是确定的,即相同的输入产生相同的结果。UserDefinedFunction随机=udf(()- >数学随机(),数据类型倍增式);随机asNondeterministic();火花udf()。注册(“随机”,随机);火花sql(“选择随机()”)。显示();/ / + - - - - - - - +/ / | UDF () |/ / + - - - - - - - +/ / | xxxxxxx |/ / + - - - - - - - +/ /定义一个参数UDF和注册火花udf()。注册(“plusOne”,UDF1<整数,整数>(){@Override公共整数调用(整数x){返回x+1;}},数据类型IntegerType);火花sql(“选择plusOne (5)”)。显示();/ / + - - - - - - - - - - - +/ / | plusOne (5) |/ / + - - - - - - - - - - - +/ / | 6 |/ / + - - - - - - - - - - - +/ /定义和注册一个双参数UDFUserDefinedFunctionstrLen=udf((字符串年代,整数x)- >年代长度()+x,数据类型IntegerType);火花udf()。注册(“strLen”,strLen);火花sql(“选择strLen('测试',1)”)。显示();/ / + - - - - - - - - - - - - +/ / | UDF(试验1)|/ / + - - - - - - - - - - - - +/ / | 5 |/ / + - - - - - - - - - - - - +/ / UDF WHERE子句火花udf()。注册(“oneArgFilter”,UDF1<,布尔>(){@Override公共布尔调用(x){返回x>5;}},数据类型BooleanType);火花范围(1,10)。createOrReplaceTempView(“测试”);火花sql(“SELECT *从测试oneArgFilter (id)”)。显示();/ / + - - - +/ / | | id/ / + - - - +/ / | 6 |/ / | 7 |/ / | 8 |/ / | 9 |/ / + - - - +