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 |+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +