pyspark.sql.functions.udf

pyspark.sql.functions。 udf ( f:联盟(可调用的[[…],任何],DataTypeOrString,没有)=没有一个,returnType:DataTypeOrString=StringType () )→联盟[UserDefinedFunctionLike,可调用的[[可调用的[[…],任何]],UserDefinedFunctionLike]]

创建一个用户定义函数(UDF)。

参数
f 函数

如果使用python函数作为一个独立的函数

returnType pyspark.sql.types.DataType或str

用户定义的函数的返回类型。值可以是pyspark.sql.types.DataType对象或DDL-formatted类型字符串。

笔记

默认用户定义函数被认为是确定的。由于优化,重复调用可能被淘汰或甚至可能调用的函数多次出现在查询。如果你的函数不确定性,电话asNondeterministic用户定义函数。例如:

> > >pyspark.sql.types进口IntegerType> > >进口随机> > >random_udf=udf(λ:int(随机随机()*One hundred.),IntegerType())asNondeterministic()

用户定义的函数不支持条件表达式或短路的布尔表达式,它最终被执行所有的内部。如果在特殊行,函数可以失败的解决方法是将条件的函数。

用户定义的函数不带关键字参数调用。

例子

> > >pyspark.sql.types进口IntegerType> > >slen=udf(λ年代:len(年代),IntegerType())> > >@udfdefto_upper(年代):如果年代没有一个:返回年代()> > >@udf(returnType=IntegerType())defadd_one(x):如果x没有一个:返回x+1> > >df=火花createDataFrame(((1,“John Doe”,21)),(“id”,“名称”,“年龄”))> > >df选择(slen(“名称”)别名(“slen(名称)”),to_upper(“名称”),add_one(“年龄”))显示()+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +| slen(名字)| to_upper(名字)| add_one(年龄)|+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +| | 8 JOHN DOE | 22 |+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +