เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

ฝึกสร้าง UDF

บางครั้งข้อมูลต้องผ่านการแปลงที่ฟังก์ชันในตัวไม่รองรับ นี่คือจุดที่ฟังก์ชันที่ผู้ใช้กำหนดเอง ("UDF") เข้ามามีบทบาท

ฟังก์ชัน SQL udf พร้อมใช้งานแล้ว

มี dataframe df2 ที่มีประเภทเป็น DataFrame[doc: array<string>, in: array<string>, out: array<string>] คอลัมน์ doc ของ dataframe นี้มีโทเค็นอย่างง่าย

โค้ดต่อไปนี้แสดง 20 แถวแรกของ df2 ที่ doc มีค่า '1':

df2.where(array_contains('doc','1')).show()

มีเป้าหมาย 2 ข้อที่ต้องทำให้สำเร็จ:

  1. ตรวจสอบให้แน่ใจว่าข้อมูลที่ผ่านการแปลงแล้วประกอบด้วยเวกเตอร์ที่ไม่ว่างเปล่า
  2. dataframe มีคอลัมน์ที่เก็บอาร์เรย์ของ string โดยแต่ละอาร์เรย์มีสมาชิกเพียงหนึ่งตัว และต้องการแปลงคอลัมน์นี้ให้เป็น string

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

Introduction to Spark SQL in Python

ดูคอร์ส

คำแนะนำการฝึกหัด

  • สร้าง udf ที่คืนค่า true ก็ต่อเมื่อค่านั้นเป็นเวกเตอร์ที่ไม่ว่างเปล่าเท่านั้น โดยใช้ numNonzeros()
  • สร้าง udf ที่ดึงสมาชิกตัวแรกของอาร์เรย์และคืนค่าเป็น string

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# Returns true if the value is a nonempty vector
nonempty_udf = udf(lambda x:  
    True if (x and hasattr(x, "toArray") and x.____())
    else False, ____())

# Returns first element of the array as string
s_udf = udf(lambda x: ____(x[0]) if (x and type(x) is list and len(x) > 0)
    else '', ____())
แก้ไขและรันโค้ด