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())> > >@udf…defto_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 |+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +