Thêm chút Spark vào dữ liệu của bạn
Trong bài tập trước, bạn đã thấy cách chuyển dữ liệu từ Spark sang pandas. Tuy nhiên, đôi khi bạn muốn làm ngược lại: đưa một DataFrame của pandas vào cụm Spark! Lớp SparkSession cũng có phương thức để làm việc này.
Phương thức .createDataFrame() nhận vào một DataFrame của pandas và trả về một Spark DataFrame.
Kết quả của phương thức này được lưu cục bộ, không nằm trong catalog của SparkSession. Điều này có nghĩa là bạn có thể dùng tất cả các phương thức của Spark DataFrame trên nó, nhưng không thể truy cập dữ liệu trong các ngữ cảnh khác.
Ví dụ, một truy vấn SQL (dùng phương thức .sql()) tham chiếu đến DataFrame của bạn sẽ báo lỗi. Để truy cập dữ liệu theo cách này, bạn cần lưu nó dưới dạng một bảng tạm thời.
Bạn có thể làm điều đó bằng phương thức .createTempView() của Spark DataFrame, phương thức này chỉ nhận một đối số là tên của bảng tạm thời bạn muốn đăng ký. Phương thức này đăng ký DataFrame thành một bảng trong catalog, nhưng vì đây là bảng tạm thời nên chỉ có thể truy cập từ SparkSession cụ thể đã dùng để tạo Spark DataFrame đó.
Cũng có phương thức .createOrReplaceTempView(). Phương thức này sẽ tạo mới một bảng tạm thời nếu chưa tồn tại, hoặc cập nhật bảng hiện có nếu đã được định nghĩa. Bạn sẽ dùng phương thức này để tránh gặp vấn đề với bảng trùng tên.
Xem sơ đồ để thấy các cách mà những cấu trúc dữ liệu Spark tương tác với nhau.

Trong workspace của bạn đã có một SparkSession tên là spark, numpy đã được import là np, và pandas là pd.
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
- Mã để tạo một DataFrame
pandasgồm các số ngẫu nhiên đã được cung cấp và lưu dưới tênpd_temp. - Tạo một Spark DataFrame tên
spark_tempbằng cách gọi phương thức Spark.createDataFrame()với đối số làpd_temp. - Xem danh sách các bảng trong cụm Spark của bạn và xác nhận rằng DataFrame mới này không có mặt. Hãy nhớ bạn có thể dùng
spark.catalog.listTables()để thực hiện. - Đăng ký DataFrame
spark_tempbạn vừa tạo thành một bảng tạm thời bằng phương thức.createOrReplaceTempView(). Bảng tạm thời phải có tên"temp". Hãy nhớ rằng tên bảng được đặt bằng cách truyền nó như đối số duy nhất cho phương thức của bạn! - Xem lại danh sách các bảng một lần nữa.
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 pd_temp
pd_temp = pd.DataFrame(np.random.random(10))
# Create spark_temp from pd_temp
spark_temp = ____
# Examine the tables in the catalog
print(____)
# Add spark_temp to the catalog
spark_temp.____
# Examine the tables in the catalog again
print(____)