การเลือกคอลัมน์
เมธอด .select() ใน Spark ทำหน้าที่เทียบเท่ากับคำสั่ง SELECT ใน SQL โดยรับอาร์กิวเมนต์หลายตัว — หนึ่งตัวต่อหนึ่งคอลัมน์ที่ต้องการเลือก อาร์กิวเมนต์เหล่านี้จะเป็นชื่อคอลัมน์ในรูปแบบ string หรือ object ของคอลัมน์ (โดยใช้ syntax df.colName) ก็ได้ เมื่อส่ง object ของคอลัมน์เข้าไป สามารถดำเนินการต่าง ๆ เช่น การบวกหรือลบได้ ซึ่งคล้ายกับการใช้ .withColumn()
ความแตกต่างระหว่าง .select() กับ .withColumn() คือ .select() จะคืนค่าเฉพาะคอลัมน์ที่ระบุเท่านั้น ในขณะที่ .withColumn() จะคืนค่าทุกคอลัมน์ใน DataFrame พร้อมกับคอลัมน์ที่กำหนดเพิ่มเข้าไป การตัดคอลัมน์ที่ไม่จำเป็นออกตั้งแต่ต้นเป็นวิธีที่ดี เพื่อไม่ต้องแบกข้อมูลส่วนเกินไปตลอดกระบวนการ ในกรณีนี้ให้ใช้ .select() แทน .withColumn()
จำไว้ว่า SparkSession ชื่อ spark และ Spark DataFrame ชื่อ flights ถูกเตรียมไว้ใน workspace แล้ว
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
พื้นฐาน PySpark
คำแนะนำการฝึกหัด
- เลือกคอลัมน์
"tailnum","origin", และ"dest"จากflightsโดยส่งชื่อคอลัมน์เป็น string แล้วบันทึกผลลัพธ์ไว้ในตัวแปรselected1 - เลือกคอลัมน์
"origin","dest", และ"carrier"โดยใช้ syntaxdf.colNameจากนั้นกรองผลลัพธ์ด้วยfilterAและfilterBที่เตรียมไว้ให้แล้ว เพื่อเก็บเฉพาะเที่ยวบินจาก SEA ไป PDX แล้วบันทึกผลลัพธ์ไว้ในตัวแปรselected2
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Select the first set of columns
selected1 = flights.select("____", "____", "____")
# Select the second set of columns
temp = flights.select(____.____, ____.____, ____.____)
# Define first filter
filterA = flights.origin == "SEA"
# Define second filter
filterB = flights.dest == "PDX"
# Filter the data, first by filterA then by filterB
selected2 = temp.filter(____).filter(____)