Pyspark.sql.DataFrameReader.csv()
Phương pháp này được sử dụng để đọc dữ liệu từ/các tệp CSV và lưu trữ chúng trong Khung dữ liệu PySpark. Nó có các tùy chọn trong khi đọc CSV vào DataFrame. Chúng tôi sẽ thảo luận chi tiết về các tùy chọn khác nhau với các ví dụ. Khi chuyển nhiều tệp CSV, điều quan trọng là phải chuyển các tên tệp có phần mở rộng trong danh sách được phân tách bằng toán tử dấu phẩy. Nếu bạn chỉ đọc một tệp CSV thì không cần cung cấp tên tệp trong danh sách.
Cú pháp:
Một tệp - spark_app.read.csv(‘file.csv’, tùy chọn …)
Nhiều tệp – spark_app.read.csv([‘file1.csv’,’file2.csv’,…],tùy chọn…)
Cũng có thể tách các tùy chọn và tên tệp.
tập tin duy nhất – spark_app.read.options(options…).csv(‘file.csv’)
Nhiều tệp – spark_app.read.options(options…).csv([‘file1.csv’,’file2.csv’,…])
Cài đặt thư viện PySpark trước khi triển khai các ví dụ sau.
pip cài đặt pyspark
Sau khi cài đặt thành công, bạn có thể thấy đầu ra như sau:
Tình huống 1: Đọc tiêu đề tệp CSV
Hãy tạo một tệp CSV có tên “person_skill.csv” với 5 bản ghi được hiển thị trong phần sau và tải tệp đó vào Khung dữ liệu PySpark:
Tham số tiêu đề được sử dụng để chỉ định tên cột trong Khung dữ liệu PySpark. Nó nhận một giá trị Boolean. Nếu nó là “True”, tên cột thực tế tồn tại trong tệp CSV được chỉ định trong DataFrame, Nếu không, c0, c1, c2… được chỉ định và tên cột thực tế sẽ là một hàng. Cách tốt nhất là đặt tham số tiêu đề thành true.
Ví dụ 1: Tiêu đề = True
nhập pysparktừ pyspark.sql nhập SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Gợi ý Linux' ).getOrCreate()
# Tải csv có tên - person_skill.csv vào các kỹ năng có nhãn cột có tiêu đề
kỹ năng = linuxhint_spark_app.read.csv( 'person_skill.csv' , tiêu đề = Đúng)
# Hiển thị khung dữ liệu
kỹ năng.show()
Đầu ra:
Giải trình:
Chúng ta có thể thấy rằng Khung dữ liệu PySpark được tạo từ tệp CSV với các cột và hàng được chỉ định.
Sử dụng lệnh sau để kiểm tra các cột:
kỹ năng.columns
Ví dụ 2: Tiêu đề = Sai
nhập pysparktừ pyspark.sql nhập SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Gợi ý Linux' ).getOrCreate()
# Tải csv có tên - person_skill.csv vào các kỹ năng có nhãn cột không có tiêu đề
kỹ năng = linuxhint_spark_app.read.csv( 'person_skill.csv' , tiêu đề =Sai)
# Hiển thị khung dữ liệu
kỹ năng.show()
Đầu ra:
Giải trình:
Chúng ta có thể thấy rằng Khung dữ liệu PySpark được tạo từ tệp CSV không có cột hiện có.
Ngoài ra, các cột hiện có được lưu trữ dưới dạng các hàng trong Khung dữ liệu PySpark.
kỹ năng.columns
Sử dụng Read.options.csv()
Bây giờ, chúng tôi đọc tệp CSV bằng phương thức read.options.csv(). Ở đây, chúng ta cần chuyển các tùy chọn như dấu phân cách, tiêu đề, v.v. trong các tùy chọn làm đối số và tên tệp trong csv(). Hãy chuyển tham số tiêu đề bằng cách đặt nó thành “True”.
Cảnh 1:
nhập pysparktừ pyspark.sql nhập SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Gợi ý Linux' ).getOrCreate()
# Sử dụng read.options.csv()
kỹ năng = linuxhint_spark_app.read. tùy chọn ( tiêu đề =True).csv( 'person_skill.csv' )
# Hiển thị khung dữ liệu
kỹ năng.show()
Đầu ra:
Tình huống 2: Đọc Dấu phân cách tệp CSV
Tham số dấu phân cách nhận ký tự được sử dụng để phân tách từng trường. Nó nhận dấu phẩy (,) theo mặc định. Hãy sử dụng cùng một tệp CSV được sử dụng trong trường hợp đầu tiên và chuyển dấu phẩy (',') làm dấu phân cách.
nhập pysparktừ pyspark.sql nhập SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Gợi ý Linux' ).getOrCreate()
# Sử dụng read.options.csv() với dấu phân cách cùng với tiêu đề
kỹ năng = linuxhint_spark_app.read. tùy chọn ( tiêu đề =True,dấu phân cách= ',' .csv( 'person_skill.csv' )
# Hiển thị khung dữ liệu
kỹ năng.show()
Đầu ra:
Đọc nhiều tệp
Cho đến bây giờ, chúng tôi đã đọc một tệp CSV. Hãy xem cách đọc nhiều hơn một tệp CSV. Trong trường hợp này, các hàng trong nhiều tệp được thêm vào một Khung dữ liệu PySpark duy nhất. Chúng ta chỉ cần chuyển tên tệp trong danh sách trong phương thức.
Ví dụ:
Hãy có các tệp CSV sau có tên là “person_skill.csv” và “person_skill2.csv” với dữ liệu sau:
Đọc hai tệp CSV này và lưu trữ chúng trong một Khung dữ liệu PySpark duy nhất.
nhập pysparktừ pyspark.sql nhập SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Gợi ý Linux' ).getOrCreate()
# Tải 2 tệp csv có tên - person_skill.csv và person_skill2.csv vào các kỹ năng có nhãn cột có tiêu đề
kỹ năng = linuxhint_spark_app.read.csv([ 'person_skill.csv' , 'person_skill2.csv' ], tháng chín = ',' , tiêu đề = Đúng)
kỹ năng.show()
Đầu ra:
Giải trình:
CSV đầu tiên chứa 6 bản ghi và CSV thứ hai chứa 3 bản ghi. Chúng ta có thể thấy rằng CSV đầu tiên được tải vào DataFrame trước. Sau đó, CSV thứ hai được tải. Cuối cùng, Khung dữ liệu PySpark chứa 9 bản ghi.
Phần kết luận
Việc đọc CSV vào Khung dữ liệu PySpark khá đơn giản với phương thức pyspark.sql.DataFrameReader.csv(). Có thể chuyển các tham số tiêu đề và dấu phân cách cho phương thức này để chỉ định các cột và định dạng. PySpark cũng hỗ trợ đọc nhiều tệp CSV cùng một lúc bằng các phương thức được cung cấp cùng với các tùy chọn của chúng. Trong bài viết này, chúng ta đã xem các ví dụ bằng cách xem xét các tùy chọn khác nhau. Ngoài ra, chúng ta đã thấy hai cách chuyển các tùy chọn cho phương thức.