PySpark Read.Parquet()

Pyspark Read Parquet



Trong PySpark, hàm write.parquet() ghi DataFrame vào tệp sàn gỗ và read.parquet() đọc tệp sàn gỗ vào Khung dữ liệu PySpark hoặc bất kỳ Nguồn dữ liệu nào khác. Để xử lý các cột trong Apache Spark một cách nhanh chóng và hiệu quả, chúng ta cần nén dữ liệu. Nén dữ liệu giúp tiết kiệm bộ nhớ của chúng tôi và tất cả các cột được chuyển đổi thành mức phẳng. Điều đó có nghĩa là bộ lưu trữ cấp độ cột phẳng tồn tại. Tệp lưu trữ những thứ này được gọi là tệp PARQUET.

Trong hướng dẫn này, chúng tôi sẽ chủ yếu tập trung vào việc đọc/tải tệp sàn gỗ vào PySpark DataFrame/SQL bằng cách sử dụng hàm read.parquet() có sẵn trong lớp pyspark.sql.DataFrameReader.

Nội dung chủ đề:







Lấy tập tin sàn gỗ



Đọc tệp Parquet vào Khung dữ liệu PySpark



Đọc tệp Parquet cho PySpark SQL





Pyspark.sql.DataFrameReader.parquet()

Chức năng này được sử dụng để đọc tệp sàn gỗ và tải tệp đó vào Khung dữ liệu PySpark. Nó lấy đường dẫn/tên tệp của tệp sàn gỗ. Chúng ta chỉ cần sử dụng hàm read.parquet() vì đây là hàm chung.

Cú pháp:



Hãy xem cú pháp của read.parquet():

spark_app.read.parquet(file_name.parquet/path)

Đầu tiên, cài đặt mô-đun PySpark bằng lệnh pip:

pip cài đặt pyspark

Lấy tập tin sàn gỗ

Để đọc tệp lát gỗ, bạn cần có dữ liệu trong đó tệp lát gỗ được tạo từ dữ liệu đó. Trong phần này, chúng ta sẽ xem cách tạo tệp sàn gỗ từ Khung dữ liệu PySpark.

Hãy tạo một Khung dữ liệu PySpark với 5 bản ghi và ghi phần này vào tệp sàn gỗ “industry_parquet”.

nhập pyspark

từ pyspark.sql nhập SparkSession, Row

linuxhint_spark_app = SparkSession.builder.appName( 'Gợi ý Linux' ).getOrCreate()

# tạo khung dữ liệu lưu trữ chi tiết Ngành

Industry_df = linuxhint_spark_app.createDataFrame([Hàng(Loại= 'Nông nghiệp' ,Diện tích= 'HOA KỲ' ,
Đánh giá = 'Nóng' ,Total_employees= 100 ),

Hàng (Loại = 'Nông nghiệp' ,Diện tích= 'Ấn Độ' , Xếp hạng = 'Nóng' ,Total_employees= 200 ),

Hàng (Loại = 'Phát triển' ,Diện tích= 'HOA KỲ' , Xếp hạng = 'Ấm' ,Total_employees= 100 ),

Hàng (Loại = 'Giáo dục' ,Diện tích= 'HOA KỲ' , Xếp hạng = 'Mát mẻ' ,Total_employees= 400 ),

Hàng (Loại = 'Giáo dục' ,Diện tích= 'HOA KỲ' , Xếp hạng = 'Ấm' ,Total_employees= hai mươi )

])

# Khung dữ liệu thực tế

ngành_df.show()

# Viết ngành_df vào tệp sàn gỗ

ngành_df.coalesce( 1 ).write.parquet( 'công nghiệp_sàn gỗ' )

Đầu ra:

Đây là DataFrame chứa 5 bản ghi.

Tệp sàn gỗ được tạo cho DataFrame trước đó. Ở đây, tên tệp của chúng tôi có phần mở rộng là “part-00000-ff70f69d-f1fb-4450-b4b4-dfd5a8d6c7ad-c000.snappy.parquet”. Chúng tôi sử dụng tệp này trong toàn bộ hướng dẫn.

Đọc tệp Parquet vào Khung dữ liệu PySpark

Chúng tôi có tập tin sàn gỗ. Hãy đọc tệp này bằng hàm read.parquet() và tải tệp đó vào Khung dữ liệu PySpark.

nhập pyspark

từ pyspark.sql nhập SparkSession, Row

linuxhint_spark_app = SparkSession.builder.appName( 'Gợi ý Linux' ).getOrCreate()

# Đọc tệp sàn gỗ vào đối tượng dataframe_from_parquet.

dataframe_from_parquet=linuxhint_spark_app.read.parquet( 'part-00000-ff70f69d-f1fb-4450-b4b4-dfd5a8d6c7ad-c000.snappy.parquet' )

# Hiển thị dataframe_from_parquet-DataFrame

dataframe_from_parquet.show()

Đầu ra:

Chúng tôi hiển thị DataFrame bằng phương thức show() được tạo từ tệp sàn gỗ.

Truy vấn SQL với tệp Parquet

Sau khi tải vào DataFrame, có thể tạo các bảng SQL và hiển thị dữ liệu có trong DataFrame. Chúng ta cần tạo CHẾ ĐỘ XEM TẠM THỜI và sử dụng các lệnh SQL để trả về các bản ghi từ DataFrame được tạo từ tệp sàn gỗ.

Ví dụ 1:

Tạo chế độ xem tạm thời có tên là “Sectors” và sử dụng lệnh SELECT để hiển thị các bản ghi trong DataFrame. Bạn có thể tham khảo cái này hướng dẫn giải thích cách tạo XEM trong Spark – SQL.

nhập pyspark

từ pyspark.sql nhập SparkSession, Row

linuxhint_spark_app = SparkSession.builder.appName( 'Gợi ý Linux' ).getOrCreate()

# Đọc tệp sàn gỗ vào đối tượng dataframe_from_parquet.

dataframe_from_parquet=linuxhint_spark_app.read.parquet( 'part-00000-ff70f69d-f1fb-4450-b4b4-dfd5a8d6c7ad-c000.snappy.parquet' )

# Tạo Chế độ xem từ tệp sàn gỗ ở trên có tên - 'Sectors'

dataframe_from_parquet.createOrReplaceTempView( 'Lĩnh vực' )

# Truy vấn để hiển thị tất cả các bản ghi từ Sector

linuxhint_spark_app.sql( 'chọn * từ Sector' ).trình diễn()

Đầu ra:

Ví dụ 2:

Sử dụng VIEW trước, viết truy vấn SQL:

  1. Để hiển thị tất cả các bản ghi từ các Sector thuộc về “Ấn Độ”.
  2. Để hiển thị tất cả các bản ghi từ các Sector có nhân viên lớn hơn 100.
# Truy vấn để hiển thị tất cả các bản ghi từ các Lĩnh vực thuộc về 'Ấn Độ'.

linuxhint_spark_app.sql( 'chọn * từ Khu vực có Khu vực = 'Ấn Độ'' ).trình diễn()

# Truy vấn để hiển thị tất cả các bản ghi từ Sector có nhân viên lớn hơn 100

linuxhint_spark_app.sql( 'chọn * từ Lĩnh vực có Total_employees>100' ).trình diễn()

Đầu ra:

Chỉ có một bản ghi có khu vực là “Ấn Độ” và hai bản ghi có nhân viên lớn hơn 100.

Đọc tệp Parquet cho PySpark SQL

Đầu tiên, chúng ta cần tạo VIEW bằng lệnh CREATE. Sử dụng từ khóa “đường dẫn” trong truy vấn SQL, chúng ta có thể đọc tệp sàn gỗ cho Spark SQL. Sau đường dẫn, chúng ta cần chỉ định tên tệp/vị trí của tệp.

Cú pháp:

spark_app.sql( 'TẠO CHẾ ĐỘ XEM TẠM THỜI view_name SỬ DỤNG TÙY CHỌN sàn gỗ (đường dẫn ' file_name.parquet ')' )

Ví dụ 1:

Tạo một chế độ xem tạm thời có tên là “Sector2” và đọc tệp sàn gỗ vào đó. Sử dụng hàm sql(), viết truy vấn chọn để hiển thị tất cả các bản ghi có trong dạng xem.

nhập pyspark

từ pyspark.sql nhập SparkSession, Row

linuxhint_spark_app = SparkSession.builder.appName( 'Gợi ý Linux' ).getOrCreate()

# Đọc tệp sàn gỗ vào Spark- SQL

linuxhint_spark_app.sql( 'TẠO CHẾ ĐỘ XEM TẠM THỜI Sector2 SỬ DỤNG TÙY CHỌN sàn gỗ (đường dẫn ' part-00000-ff70f69d-f1fb- 4450 -b4b4-dfd5a8d6c7ad-c000.snappy.parquet ')' )

# Truy vấn để hiển thị tất cả các bản ghi từ Sector2

linuxhint_spark_app.sql( 'chọn * từ Sector2' ).trình diễn()

Đầu ra:

Ví dụ 2:

Sử dụng CHẾ ĐỘ XEM trước đó và viết truy vấn để hiển thị tất cả các bản ghi có xếp hạng là “Nóng” hoặc “Mát”.

# Truy vấn để hiển thị tất cả các bản ghi từ Sector2 với Rating- Hot hoặc Cool.

linuxhint_spark_app.sql( 'chọn * từ Khu vực 2 nơi Xếp hạng='Nóng' HOẶC Xếp hạng='Mát mẻ'' ).trình diễn()

Đầu ra:

Có ba bản ghi với xếp hạng 'Nóng' hoặc 'Mát'.

Phần kết luận

Trong PySpark, hàm write.parquet() ghi DataFrame vào tệp sàn gỗ. Hàm read.parquet() đọc tệp sàn gỗ vào Khung dữ liệu PySpark hoặc bất kỳ Nguồn dữ liệu nào khác. Chúng tôi đã học cách đọc tệp sàn gỗ vào Khung dữ liệu PySpark và vào bảng PySpark. Là một phần của hướng dẫn này, chúng tôi cũng đã thảo luận cách tạo các bảng từ Khung dữ liệu PySpark và lọc dữ liệu bằng mệnh đề WHERE.