Nội dung chủ đề:
- Khung dữ liệu PySpark sang CSV bằng cách chuyển đổi sang Khung dữ liệu Pandas
- PySpark Pandas DataFrame sang CSV bằng phương thức To_Csv()
- PySpark Pandas DataFrame sang CSV bằng cách chuyển đổi thành mảng NumPy
- Khung dữ liệu PySpark sang CSV bằng phương thức Write.Csv()
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ế độ...)
- 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.
- 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”.
- 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”.
- 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.
- 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 pysparktừ 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 pysparktừ 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,...)- 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.
- 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”.
- 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”.
- 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 pysparkpyspark_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 pysparkpyspark_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 pysparkpyspark_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 pysparktừ 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.