Chuyển đổi khung dữ liệu PySpark sang CSV

Chuyen Doi Khung Du Lieu Pyspark Sang Csv



Hãy xem xét bốn kịch bản khác nhau để chuyển đổi Khung dữ liệu PySpark sang CSV. Trực tiếp, chúng tôi sử dụng phương thức write.csv() để chuyển đổi Khung dữ liệu PySpark thành CSV. Sử dụng hàm to_csv(), chúng tôi chuyển đổi Khung dữ liệu PySpark Pandas thành CSV. Cũng có thể thực hiện được bằng cách chuyển đổi nó thành mảng NumPy.

Nội dung chủ đề:

Nếu bạn muốn biết về PySpark DataFrame và cài đặt mô-đun, hãy xem phần này bài báo .







Khung dữ liệu PySpark sang CSV bằng cách chuyển đổi sang Khung dữ liệu Pandas

to_csv() là một phương thức có sẵn trong mô-đun Pandas để chuyển đổi Khung dữ liệu Pandas thành CSV. Trước tiên, chúng ta cần chuyển đổi Khung dữ liệu PySpark của mình thành Khung dữ liệu Pandas. Phương thức toPandas() được sử dụng để làm điều đó. Hãy xem cú pháp của to_csv() cùng với các tham số của nó.



Cú pháp:



pandas_dataframe_obj.to_csv(đường dẫn/ 'file_name.csv' , tiêu đề , chỉ mục, cột, chế độ...)
  1. Chúng tôi cần chỉ định tên tệp của tệp CSV. Nếu bạn muốn lưu trữ CSV đã tải xuống ở một vị trí cụ thể trên PC của mình, bạn cũng có thể chỉ định đường dẫn cùng với tên tệp.
  2. Các cột được bao gồm nếu tiêu đề được đặt thành “True”. Nếu bạn không cần cột, hãy đặt tiêu đề thành “Sai”.
  3. Các chỉ số được chỉ định nếu chỉ mục được đặt thành “True”. Nếu bạn không cần chỉ mục, hãy đặt chỉ mục thành “Sai”.
  4. Tham số cột lấy danh sách tên cột trong đó chúng tôi có thể chỉ định cột cụ thể nào được trích xuất vào tệp CSV.
  5. Chúng tôi có thể thêm bản ghi vào CSV bằng tham số chế độ. Nối thêm – “a” được sử dụng để thực hiện việc này.

Ví dụ 1: Với các tham số Header và Index

Tạo Khung dữ liệu PySpark “skills_df” với 3 hàng và 4 cột. Chuyển đổi Khung dữ liệu này thành CSV bằng cách chuyển đổi nó thành Khung dữ liệu Pandas trước tiên.





nhập pyspark

từ pyspark.sql nhập SparkSession

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

# dữ liệu kỹ năng có 3 hàng và 4 cột

kỹ năng =[{ 'nhận dạng' : 123 , 'người' : 'Em yêu' , 'kỹ năng' : 'bức vẽ' , 'phần thưởng' : 25000 },

{ 'nhận dạng' : 112 , 'người' : 'mouni' , 'kỹ năng' : 'nhảy' , 'phần thưởng' : 2000 },

{ 'nhận dạng' : 153 , 'người' : 'Tulasi' , 'kỹ năng' : 'đọc' , 'phần thưởng' : 1200 }

]

# tạo khung dữ liệu kỹ năng từ dữ liệu trên

Skills_df = linuxhint_spark_app.createDataFrame(kỹ năng)

Skills_df.show()

# Chuyển đổi skills_df sang pandas DataFrame

pandas_skills_df= skills_df.toPandas()

in(pandas_skills_df)

# Chuyển đổi Khung dữ liệu này thành csv với tiêu đề và chỉ mục

pandas_skills_df.to_csv( 'pandas_skills1.csv' , tiêu đề =True, chỉ mục=True)

Đầu ra:



Chúng ta có thể thấy rằng Khung dữ liệu PySpark được chuyển đổi thành Khung dữ liệu Pandas. Hãy xem liệu nó có được chuyển đổi thành CSV với các tên và chỉ mục cột hay không:

Ví dụ 2: Nối dữ liệu vào CSV

Tạo thêm một Khung dữ liệu PySpark với 1 bản ghi và nối bản ghi này vào CSV được tạo như một phần của ví dụ đầu tiên của chúng tôi. Đảm bảo rằng chúng ta cần đặt tiêu đề thành “Sai” cùng với tham số chế độ. Mặt khác, tên cột cũng được thêm vào dưới dạng một hàng.

nhập pyspark

từ pyspark.sql nhập SparkSession

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

kỹ năng =[{ 'nhận dạng' : 90 , 'người' : 'Bhargav' , 'kỹ năng' : 'đọc' , 'phần thưởng' : 12000 }

]

# tạo khung dữ liệu kỹ năng từ dữ liệu trên

Skills_df = linuxhint_spark_app.createDataFrame(kỹ năng)

# Chuyển đổi skills_df sang pandas DataFrame

pandas_skills_df= skills_df.toPandas()

# Thêm DataFrame này vào tệp pandas_skills1.csv

pandas_skills_df.to_csv( 'pandas_skills1.csv' , chế độ = 'Một' , tiêu đề =Sai)

Đầu ra CSV:

Chúng ta có thể thấy rằng một hàng mới được thêm vào tệp CSV.

Ví dụ 3: Với tham số Columns

Hãy có cùng một DataFrame và chuyển đổi nó thành CSV với hai cột: “người” và “giải thưởng”.

nhập pyspark

từ pyspark.sql nhập SparkSession

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

# dữ liệu kỹ năng có 3 hàng và 4 cột

kỹ năng =[{ 'nhận dạng' : 123 , 'người' : 'Em yêu' , 'kỹ năng' : 'bức vẽ' , 'phần thưởng' : 25000 },

{ 'nhận dạng' : 112 , 'người' : 'mouni' , 'kỹ năng' : 'nhảy' , 'phần thưởng' : 2000 },

{ 'nhận dạng' : 153 , 'người' : 'Tulasi' , 'kỹ năng' : 'đọc' , 'phần thưởng' : 1200 }

]

# tạo khung dữ liệu kỹ năng từ dữ liệu trên

Skills_df = linuxhint_spark_app.createDataFrame(kỹ năng)

# Chuyển đổi skills_df sang pandas DataFrame

pandas_skills_df= skills_df.toPandas()

# Chuyển đổi Khung dữ liệu này thành csv với các cột cụ thể

pandas_skills_df.to_csv( 'pandas_skills2.csv' , cột = [ 'người' , 'phần thưởng' ])

Đầu ra CSV:

Chúng ta có thể thấy rằng chỉ tồn tại các cột “người” và “giải thưởng” trong tệp CSV.

PySpark Pandas DataFrame sang CSV bằng phương thức To_Csv()

to_csv() là một phương thức có sẵn trong mô-đun Pandas để chuyển đổi Khung dữ liệu Pandas thành CSV. Trước tiên, chúng ta cần chuyển đổi Khung dữ liệu PySpark của mình thành Khung dữ liệu Pandas. Phương thức toPandas() được sử dụng để làm điều đó. Hãy xem cú pháp của to_csv() cùng với các tham số của nó:

Cú pháp:

pyspark_pandas_dataframe_obj.to_csv(đường dẫn/ 'file_name.csv' , tiêu đề , chỉ mục, cột,...)
  1. Chúng tôi cần chỉ định tên tệp của tệp CSV. Nếu bạn muốn lưu trữ CSV đã tải xuống ở một vị trí cụ thể trên PC của mình, bạn cũng có thể chỉ định đường dẫn cùng với tên tệp.
  2. Các cột được bao gồm nếu tiêu đề được đặt thành “True”. Nếu bạn không cần cột, hãy đặt tiêu đề thành “Sai”.
  3. Các chỉ số được chỉ định nếu chỉ mục được đặt thành “True”. Nếu bạn không cần chỉ mục, hãy đặt chỉ mục thành “Sai”.
  4. Tham số cột lấy danh sách tên cột trong đó chúng tôi có thể chỉ định cột cụ thể nào được trích xuất vào tệp CSV.

Ví dụ 1: Với tham số Columns

Tạo một Khung dữ liệu PySpark Pandas với 3 cột và chuyển đổi nó thành CSV bằng cách sử dụng to_csv() với các cột “người” và “giải thưởng”.

từ gấu trúc nhập khẩu pyspark

pyspark_pandas_dataframe=pandas.DataFrame({ 'nhận dạng' :[ 90 , 78 , 90 , 57 ], 'người' :[ 'Em yêu' , 'mouni' , 'bản thân anh ấy' , 'radha' ], 'phần thưởng' :[ 1 , 2 , 3 , 4 ]})

in (pyspark_pandas_dataframe)

# Chuyển đổi Khung dữ liệu này thành csv với các cột cụ thể

pyspark_pandas_dataframe.to_csv( 'pyspark_pandas1' , cột = [ 'người' , 'phần thưởng' ])

Đầu ra:

Chúng ta có thể thấy rằng Khung dữ liệu PySpark Pandas được chuyển đổi thành CSV với hai phân vùng. Mỗi phân vùng chứa 2 bản ghi. Ngoài ra, các cột trong CSV chỉ là 'người' và 'giải thưởng'.

Tệp phân vùng 1:

Tệp phân vùng 2:

Ví dụ 2: Với tham số Header

Sử dụng DataFrame trước đó và chỉ định tham số tiêu đề bằng cách đặt nó thành “True”.

từ gấu trúc nhập khẩu pyspark

pyspark_pandas_dataframe=pandas.DataFrame({ 'nhận dạng' :[ 90 , 78 , 90 , 57 ], 'người' :[ 'Em yêu' , 'mouni' , 'bản thân anh ấy' , 'radha' ], 'phần thưởng' :[ 1 , 2 , 3 , 4 ]})

# Chuyển đổi Khung dữ liệu này thành csv với tiêu đề.

pyspark_pandas_dataframe.to_csv( 'pyspark_pandas2' , tiêu đề = Đúng)

Đầu ra CSV:

Chúng ta có thể thấy rằng Khung dữ liệu PySpark Pandas được chuyển đổi thành CSV với hai phân vùng. Mỗi phân vùng chứa 2 bản ghi với tên cột.

Tệp phân vùng 1:

Tệp phân vùng 2:

PySpark Pandas DataFrame sang CSV bằng cách chuyển đổi thành mảng NumPy

Chúng tôi có một tùy chọn để chuyển đổi Khung dữ liệu PySpark Pandas sang CSV bằng cách chuyển đổi thành mảng Numpy. To_numpy() là một phương thức có sẵn trong mô-đun PySpark Pandas để chuyển đổi Khung dữ liệu PySpark Pandas thành mảng NumPy.

Cú pháp:

pyspark_pandas_dataframe_obj.to_numpy()

Nó sẽ không nhận bất kỳ tham số nào.

Sử dụng phương thức Tofile()

Sau khi chuyển đổi sang mảng NumPy, chúng ta có thể sử dụng phương thức tofile() để chuyển đổi NumPy sang CSV. Tại đây, nó lưu trữ từng bản ghi trong một cột ô mới trong tệp CSV.

Cú pháp:

array_obj.to_numpy(tên tệp/đường dẫn,sep=’ ’)

Nó lấy tên tệp hoặc đường dẫn của CSV và dấu phân cách.

Ví dụ:

Tạo Khung dữ liệu gấu trúc PySpark với 3 cột và 4 bản ghi và chuyển đổi nó thành CSV bằng cách chuyển đổi nó thành một mảng NumPy trước tiên.

từ gấu trúc nhập khẩu pyspark

pyspark_pandas_dataframe=pandas.DataFrame({ 'nhận dạng' :[ 90 , 78 , 90 , 57 ], 'người' :[ 'Em yêu' , 'mouni' , 'bản thân anh ấy' , 'radha' ], 'phần thưởng' :[ 1 , 2 , 3 , 4 ]})

# Chuyển đổi DataFrame ở trên thành mảng có nhiều mảng

đã chuyển đổi = pyspark_pandas_dataframe.to_numpy()

in (đã chuyển đổi)

# Sử dụng tofile()

đã chuyển đổi.tofile( 'đã chuyển đổi1.csv' , tháng 9 = ',' )

Đầu ra:

[[ 90 'Em yêu' 1 ]

[ 78 'mouni' 2 ]

[ 90 'bản thân anh ấy' 3 ]

[ 57 'radha' 4 ]]

Chúng ta có thể thấy rằng Khung dữ liệu PySpark Pandas được chuyển đổi thành một mảng NumPy (12 giá trị). Nếu bạn có thể xem dữ liệu CSV, nó sẽ lưu trữ từng giá trị ô trong một cột mới.

Khung dữ liệu PySpark sang CSV bằng phương thức Write.Csv()

Phương thức write.csv() lấy tên/đường dẫn tệp mà chúng ta cần lưu tệp CSV làm tham số.

Cú pháp:

dataframe_object.coalesce( 1 .write.csv( 'tên_tệp' )

Trên thực tế, CSV được lưu dưới dạng phân vùng (nhiều hơn một). Để loại bỏ điều này, chúng tôi hợp nhất tất cả các tệp CSV được phân vùng thành một. Trong trường hợp này, chúng tôi sử dụng hàm coesce(). Bây giờ, chúng ta chỉ có thể thấy một tệp CSV có tất cả các hàng từ Khung dữ liệu PySpark.

Ví dụ:

Hãy xem xét Khung dữ liệu PySpark với 4 bản ghi có 4 cột. Ghi DataFrame này vào CSV bằng tệp có tên “market_details”.

nhập pyspark

từ pyspark.sql nhập SparkSession

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

# dữ liệu thị trường với 4 hàng và 4 cột

thị trường =[{ 'm_id' : 'mz-001' , 'm_name' : 'ABC' , 'm_city' : 'delhi' , 'm_state' : 'delhi' },

{ 'm_id' : 'mz-002' , 'm_name' : 'XYZ' , 'm_city' : 'patna' , 'm_state' : 'may mắn' },

{ 'm_id' : 'mz-003' , 'm_name' : 'PQR' , 'm_city' : 'florida' , 'm_state' : 'một' },

{ 'm_id' : 'mz-004' , 'm_name' : 'ABC' , 'm_city' : 'delhi' , 'm_state' : 'may mắn' }

]



# tạo khung dữ liệu thị trường từ dữ liệu trên

market_df = linuxhint_spark_app.createDataFrame(thị trường)

# Dữ liệu thị trường thực tế

market_df.show()

# ghi.csv()

market_df.coalesce( 1 .write.csv( 'market_details' )

Đầu ra:

Hãy kiểm tra tệp:

Mở tệp cuối cùng để xem các bản ghi.

Phần kết luận

Chúng tôi đã tìm hiểu bốn kịch bản khác nhau chuyển đổi Khung dữ liệu PySpark sang CSV với các ví dụ bằng cách xem xét các tham số khác nhau. Khi bạn đang làm việc với Khung dữ liệu PySpark, bạn có hai tùy chọn để chuyển đổi Khung dữ liệu này thành CSV: một cách là sử dụng phương thức write() và một cách khác là sử dụng phương thức to_csv() bằng cách chuyển đổi sang Khung dữ liệu Pandas. Nếu bạn đang làm việc với PySpark Pandas DataFrame, bạn cũng có thể sử dụng to_csv() và tofile() bằng cách chuyển đổi sang mảng NumPy.