การค้นหาลำดับคำที่พบบ่อย
ก่อนหน้านี้เราได้เรียนรู้วิธีสร้างคิวรีที่ค้นหาลำดับคำความยาวสาม ("3-tuple") แล้วนำคิวรีนั้นมาใช้เป็น subquery ใน SQL query แบบดั้งเดิม เพื่อค้นหา 3-tuple ที่พบบ่อยที่สุดในเอกสาร ตอนนี้จะทำงานในลักษณะเดียวกัน แต่เปลี่ยนเป็นค้นหา 5-tuple ที่พบบ่อยที่สุดแทน
DataFrame text_df พร้อมใช้งานแล้ว โดยมีข้อมูลจากห้าบทแรกของนิยาย Sherlock Holmes ประกอบด้วยคอลัมน์ word, id, part และ title คอลัมน์ id เป็นจำนวนเต็มที่บ่งบอกลำดับของคำในเอกสาร — คำที่อยู่หลังกว่าจะมีค่า id มากกว่า ส่วนคอลัมน์ part แบ่งข้อมูลออกเป็นบทต่าง ๆ นอกจากนี้ DataFrame text_df ยังถูกลงทะเบียนเป็นตารางชั่วคราวชื่อ text เป้าหมายของเราคือสร้างชุดข้อมูลที่แต่ละแถวแทน 5-tuple หนึ่งชุด พร้อมคอลัมน์ count ที่บอกจำนวนครั้งที่ tuple นั้นปรากฏในชุดข้อมูล
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Introduction to Spark SQL in Python
คำแนะนำการฝึกหัด
- สร้างคิวรี
queryเพื่อค้นหา 5-tuple ที่พบบ่อยที่สุด 10 อันดับแรกในชุดข้อมูล
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Find the top 10 sequences of five words
query = """
SELECT w1, w2, w3, w4, w5, COUNT(*) AS count FROM (
SELECT word AS w1,
LEAD(____) OVER(____ ) AS w2,
____ AS w3,
____ AS w4,
____ AS w5
FROM text
)
GROUP BY w1, w2, w3, w4, w5
ORDER BY count DESC, w1, w2, w3, w4, w5
LIMIT ____
"""
df = spark.sql(query)
df.show()