PySpark Đọc CSV()

Pyspark Doc Csv



Có thể xây dựng Khung dữ liệu PySpark từ dữ liệu CSV trong PySpark bằng cách sử dụng hàm read.csv(). Trong một số trường hợp, nếu bạn muốn tải dữ liệu ngoài vào Khung dữ liệu PySpark, PySpark hỗ trợ nhiều định dạng như JSON, CSV, v.v. Trong hướng dẫn này, chúng ta sẽ xem cách đọc dữ liệu CSV và tải dữ liệu đó vào Khung dữ liệu PySpark. Ngoài ra, chúng tôi sẽ thảo luận về việc tải nhiều tệp CSV trong một DataFrame cùng một lúc với các ví dụ.

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 pyspark

từ 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 pyspark

từ 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 pyspark

từ 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 pyspark

từ 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 pyspark

từ 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.