การใช้ User Defined Functions ใน Spark
คุณได้เห็นแล้วว่าฟังก์ชันสตริงที่มีอยู่ใน Spark นั้นมีประสิทธิภาพเพียงใดในการจัดการ DataFrame อย่างไรก็ตาม เมื่อข้อมูลมีความซับซ้อนมากขึ้น การซ้อนฟังก์ชันหลายชั้นอาจทำให้โค้ดอ่านและดูแลรักษาได้ยาก ในกรณีนี้ User Defined Functions จะช่วยให้จัดการ DataFrame ได้สะดวกยิ่งขึ้น
ในแบบฝึกหัดนี้ จะใช้ DataFrame voter_df โดยแทนที่คอลัมน์ first_name ด้วยชื่อต้นและชื่อกลางรวมกัน
ไลบรารี pyspark.sql.functions พร้อมใช้งานในชื่อ alias F และคลาสจาก pyspark.sql.types ได้ถูก import ไว้แล้ว
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การทำความสะอาดข้อมูลด้วย PySpark
คำแนะนำการฝึกหัด
- แก้ไขฟังก์ชัน
getFirstAndMiddle()ให้คืนค่าเป็น string ที่ประกอบด้วยชื่อทั้งหมด คั่นด้วยช่องว่าง ยกเว้นรายการสุดท้ายใน list ชื่อ - กำหนดฟังก์ชันให้เป็น user-defined function โดยระบุให้คืนค่าเป็นชนิด string
- สร้างคอลัมน์ใหม่ชื่อ
first_and_middle_nameบนvoter_dfโดยใช้ UDF ที่สร้างขึ้น - แสดงผล 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
____