在 Spark 中使用使用者自訂函式
在操作 DataFrame 時,你已經看過 Spark 內建字串函式的威力。不過,當需求變複雜時,若只靠內建函式容易寫成一大串難以維護的巢狀呼叫。這時就可以用使用者自訂函式(User Defined Function,UDF)來處理 DataFrame。
在這個練習中,我們會使用 voter_df DataFrame,但你要把 first_name 欄位改成由名字與中間名組成。
pyspark.sql.functions 已以別名 F 匯入。pyspark.sql.types 中的類別也都已經匯入。
本練習屬於課程
使用 PySpark 清理資料
練習說明
- 編輯
getFirstAndMiddle()函式,回傳以空白分隔的姓名字串,但要排除 names 串列中的最後一個項目。 - 將此函式定義為使用者自訂函式(UDF),回傳型別為字串。
- 使用你的 UDF 在
voter_df上建立一個名為first_and_middle_name的新欄位。 - 顯示這個 DataFrame。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
def getFirstAndMiddle(names):
# Return a space separated string of names
return ' '.join(____)
# Define the method as a UDF
udfFirstAndMiddle = F.____(____, ____)
# Create a new column using your UDF
voter_df = voter_df.withColumn('first_and_middle_name', ____(____))
# Show the DataFrame
____