การสร้างคอลัมน์
ในบทนี้ คุณจะได้เรียนรู้วิธีใช้เมธอดที่ Spark กำหนดไว้ใน DataFrame class เพื่อดำเนินการกับข้อมูลในรูปแบบต่าง ๆ
มาเริ่มต้นด้วยการดำเนินการในระดับคอลัมน์กัน ใน Spark สามารถทำได้ผ่านเมธอด .withColumn() ซึ่งรับอาร์กิวเมนต์ 2 ตัว ได้แก่ ชื่อคอลัมน์ใหม่ในรูปแบบ string และคอลัมน์ใหม่นั้นเอง
คอลัมน์ใหม่ต้องเป็น object ของ Column class ซึ่งสร้างได้ง่าย ๆ ด้วยการดึงคอลัมน์จาก DataFrame โดยใช้ df.colName
การอัปเดต Spark DataFrame แตกต่างจากการทำงานกับ pandas เนื่องจาก Spark DataFrame เป็น immutable หมายความว่าไม่สามารถเปลี่ยนแปลงได้โดยตรง จึงไม่สามารถแก้ไขคอลัมน์ในที่เดิมได้
ดังนั้น เมธอดเหล่านี้จะ return DataFrame ใหม่เสมอ หากต้องการเขียนทับ DataFrame เดิม ต้องกำหนดค่าใหม่ให้กับตัวแปรเดิม ดังนี้
df = df.withColumn("newCol", df.oldCol + 1)
โค้ดด้านบนจะสร้าง DataFrame ที่มีคอลัมน์เดิมทั้งหมดของ df บวกกับคอลัมน์ใหม่ชื่อ newCol โดยแต่ละค่าใน newCol จะเท่ากับค่าที่ตรงกันใน oldCol บวก 1
หากต้องการเขียนทับคอลัมน์ที่มีอยู่แล้ว ให้ระบุชื่อคอลัมน์นั้นเป็นอาร์กิวเมนต์แรกได้เลย!
จำไว้ว่า SparkSession ชื่อ spark ถูกเตรียมไว้ใน workspace ของคุณแล้ว
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
พื้นฐาน PySpark
คำแนะนำการฝึกหัด
- ใช้เมธอด
spark.table()พร้อมอาร์กิวเมนต์"flights"เพื่อสร้าง DataFrame ที่บรรจุข้อมูลจากตารางflightsใน.catalogแล้วบันทึกไว้ในตัวแปรชื่อflights - แสดงข้อมูลส่วนหัวของ
flightsโดยใช้flights.show()ตรวจสอบผลลัพธ์ที่ได้ โดยคอลัมน์air_timeจะเก็บระยะเวลาบินในหน่วยนาที - อัปเดต
flightsให้มีคอลัมน์ใหม่ชื่อduration_hrsซึ่งเก็บระยะเวลาบินในหน่วยชั่วโมง (หารair_timeด้วยจำนวนนาทีในหนึ่งชั่วโมง)
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Create the DataFrame flights
flights = spark.table(____)
# Show the head
____.____()
# Add duration_hrs
flights = flights.withColumn(____)