Tạo cột mới
Trong chương này, bạn sẽ học cách dùng các phương thức do lớp DataFrame của Spark cung cấp để thực hiện những thao tác dữ liệu phổ biến.
Hãy bắt đầu với các phép toán theo cột. Trong Spark, bạn có thể làm điều này bằng phương thức .withColumn(), nhận hai đối số. Thứ nhất là một chuỗi tên cột mới, và thứ hai là chính cột mới đó.
Cột mới phải là một đối tượng thuộc lớp Column. Tạo đối tượng này rất đơn giản: chỉ cần trích xuất một cột từ DataFrame bằng df.colName.
Cập nhật một Spark DataFrame hơi khác so với làm việc trong pandas vì Spark DataFrame là bất biến (immutable). Điều này có nghĩa là nó không thể bị thay đổi, nên các cột không thể được cập nhật trực tiếp tại chỗ.
Vì vậy, tất cả các phương thức này đều trả về một DataFrame mới. Để ghi đè DataFrame gốc, bạn phải gán lại DataFrame được trả về từ phương thức như sau:
df = df.withColumn("newCol", df.oldCol + 1)
Đoạn mã trên tạo ra một DataFrame có các cột giống df và thêm một cột mới, newCol, trong đó mỗi giá trị bằng giá trị tương ứng từ oldCol cộng thêm một.
Để ghi đè một cột đã tồn tại, chỉ cần truyền tên cột đó làm đối số đầu tiên!
Lưu ý, một SparkSession tên là spark đã có sẵn trong không gian làm việc của bạn.
Bài tập này là một phần của khóa học
Nền tảng về PySpark
Hướng dẫn bài tập
- Dùng phương thức
spark.table()với đối số"flights"để tạo một DataFrame chứa dữ liệu của bảngflightstrong.catalog. Lưu nó vào biếnflights. - Hiển thị phần đầu của
flightsbằngflights.show(). Kiểm tra đầu ra: cộtair_timechứa thời lượng chuyến bay tính theo phút. - Cập nhật
flightsđể thêm một cột mới tênduration_hrs, chứa thời lượng mỗi chuyến bay tính theo giờ (bạn cần chiaair_timecho số phút trong một giờ).
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# Create the DataFrame flights
flights = spark.table(____)
# Show the head
____.____()
# Add duration_hrs
flights = flights.withColumn(____)