Kino-convert ang PySpark DataFrame sa CSV

Kino Convert Ang Pyspark Dataframe Sa Csv



Tingnan natin ang apat na magkakaibang senaryo ng pag-convert ng PySpark DataFrame sa CSV. Direkta, ginagamit namin ang write.csv() na paraan para i-convert ang PySpark DataFrame sa CSV. Gamit ang to_csv() function, kino-convert namin ang PySpark Pandas DataFrame sa CSV. Maaari rin itong maging posible sa pamamagitan ng pag-convert nito sa NumPy array.

Paksa ng Nilalaman:

Kung gusto mong malaman ang tungkol sa PySpark DataFrame at pag-install ng module, dumaan dito artikulo .







PySpark DataFrame sa CSV sa pamamagitan ng Pag-convert sa Pandas DataFrame

Ang to_csv() ay isang paraan na available sa module ng Pandas na nagko-convert sa Pandas DataFrame sa CSV. Una, kailangan naming i-convert ang aming PySpark DataFrame sa Pandas DataFrame. Ang toPandas() method ay ginagamit para gawin iyon. Tingnan natin ang syntax ng to_csv() kasama ang mga parameter nito.



Syntax:



pandas_dataframe_obj.to_csv(path/ 'file_name.csv' , header ,index, mga column, mode...)
  1. Kailangan naming tukuyin ang pangalan ng file ng CSV file. Kung gusto mong iimbak ang na-download na CSV sa isang partikular na lokasyon sa iyong PC, maaari mo ring tukuyin ang path kasama ang pangalan ng file.
  2. Kasama ang mga column kung nakatakda ang header sa “True”. Kung hindi mo kailangan ng mga column, itakda ang header sa 'False'.
  3. Tinukoy ang mga indeks kung nakatakda ang index sa “True”. Kung hindi mo kailangan ng mga indeks, itakda ang index sa 'False'.
  4. Ang parameter ng Columns ay kumukuha ng isang listahan ng mga pangalan ng column kung saan matutukoy namin kung aling mga partikular na column ang kinukuha sa CSV file.
  5. Nagagawa naming idagdag ang mga tala sa CSV gamit ang parameter ng mode. Append – “a” ang ginagamit para gawin ito.

Halimbawa 1: Gamit ang Header at Index Parameter

Gawin ang 'skills_df' PySpark DataFrame na may 3 row at 4 na column. I-convert ang DataFrame na ito sa CSV sa pamamagitan ng unang pag-convert nito sa Pandas DataFrame.





import pyspark

mula sa pyspark.sql import SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Linux Hint' ).getOrCreate()

# data ng kasanayan na may 3 row at 4 na column

kasanayan =[{ 'id' : 123 , 'tao' : 'Honey' , 'kasanayan' : 'pagpipinta' , 'premyo' : 25000 },

{ 'id' : 112 , 'tao' : 'Mouni' , 'kasanayan' : 'sayaw' , 'premyo' : 2000 },

{ 'id' : 153 , 'tao' : 'Tulasi' , 'kasanayan' : 'pagbabasa' , 'premyo' : 1200 }

]

# lumikha ng dataframe ng mga kasanayan mula sa data sa itaas

skills_df = linuxhint_spark_app.createDataFrame(skills)

skills_df.show()

# I-convert ang skills_df sa pandas DataFrame

pandas_skills_df= skills_df.toPandas()

print(pandas_skills_df)

# I-convert ang DataFrame na ito sa csv na may header at index

pandas_skills_df.to_csv( 'pandas_skills1.csv' , header =Totoo, index=Totoo)

Output:



Makikita natin na ang PySpark DataFrame ay na-convert sa Pandas DataFrame. Tingnan natin kung ito ay na-convert sa CSV na may mga pangalan ng column at mga indeks:

Halimbawa 2: Idagdag ang Data sa CSV

Gumawa ng isa pang PySpark DataFrame na may 1 record at idagdag ito sa CSV na ginawa bilang bahagi ng aming unang halimbawa. Tiyaking kailangan nating itakda ang header sa 'False' kasama ang parameter ng mode. Kung hindi, ang mga pangalan ng column ay idinadagdag din bilang isang row.

import pyspark

mula sa pyspark.sql import SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Linux Hint' ).getOrCreate()

kasanayan =[{ 'id' : 90 , 'tao' : 'Bhargav' , 'kasanayan' : 'pagbabasa' , 'premyo' : 12000 }

]

# lumikha ng dataframe ng mga kasanayan mula sa data sa itaas

skills_df = linuxhint_spark_app.createDataFrame(skills)

# I-convert ang skills_df sa pandas DataFrame

pandas_skills_df= skills_df.toPandas()

# Idagdag ang DataFrame na ito sa pandas_skills1.csv file

pandas_skills_df.to_csv( 'pandas_skills1.csv' , mode= 'a' , header =Mali)

CSV Output:

Makikita natin na may idinagdag na bagong row sa CSV file.

Halimbawa 3: Gamit ang Mga Column Parameter

Magkaroon tayo ng parehong DataFrame at i-convert ito sa CSV na may dalawang column: 'tao' at 'premyo.'

import pyspark

mula sa pyspark.sql import SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Linux Hint' ).getOrCreate()

# data ng kasanayan na may 3 row at 4 na column

kasanayan =[{ 'id' : 123 , 'tao' : 'Honey' , 'kasanayan' : 'pagpipinta' , 'premyo' : 25000 },

{ 'id' : 112 , 'tao' : 'Mouni' , 'kasanayan' : 'sayaw' , 'premyo' : 2000 },

{ 'id' : 153 , 'tao' : 'Tulasi' , 'kasanayan' : 'pagbabasa' , 'premyo' : 1200 }

]

# lumikha ng dataframe ng mga kasanayan mula sa data sa itaas

skills_df = linuxhint_spark_app.createDataFrame(skills)

# I-convert ang skills_df sa pandas DataFrame

pandas_skills_df= skills_df.toPandas()

# I-convert ang DataFrame na ito sa csv na may mga partikular na column

pandas_skills_df.to_csv( 'pandas_skills2.csv' , columns=[ 'tao' , 'premyo' ])

CSV Output:

Makikita natin na ang mga column na 'tao' at 'premyo' lang ang umiiral sa CSV file.

PySpark Pandas DataFrame to CSV Gamit ang To_Csv() Method

Ang to_csv() ay isang paraan na available sa module ng Pandas na nagko-convert sa Pandas DataFrame sa CSV. Una, kailangan naming i-convert ang aming PySpark DataFrame sa Pandas DataFrame. Ang toPandas() method ay ginagamit para gawin iyon. Tingnan natin ang syntax ng to_csv() kasama ang mga parameter nito:

Syntax:

pyspark_pandas_dataframe_obj.to_csv(path/ 'file_name.csv' , header ,index, mga column,...)
  1. Kailangan naming tukuyin ang pangalan ng file ng CSV file. Kung gusto mong iimbak ang na-download na CSV sa isang partikular na lokasyon sa iyong PC, maaari mo ring tukuyin ang path kasama ang pangalan ng file.
  2. Kasama ang mga column kung ang header ay nakatakda sa “True”. Kung hindi mo kailangan ng mga column, itakda ang header sa 'False'.
  3. Tinukoy ang mga indeks kung nakatakda ang index sa “True”. Kung hindi mo kailangan ng mga indeks, itakda ang index sa 'False'.
  4. Ang parameter ng column ay kumukuha ng listahan ng mga pangalan ng column kung saan matutukoy namin kung aling mga partikular na column ang i-extract sa CSV file.

Halimbawa 1: Gamit ang Mga Column Parameter

Gumawa ng PySpark Pandas DataFrame na may 3 column at i-convert ito sa CSV gamit ang to_csv() na may mga column na 'tao' at 'premyo'.

mula sa pyspark import panda

pyspark_pandas_dataframe=pandas.DataFrame({ 'id' :[ 90 , 78 , 90 , 57 ], 'tao' :[ 'Honey' , 'Mouni' , 'sarili' , 'radha' ], 'premyo' :[ 1 , 2 , 3 , 4 ]})

print(pyspark_pandas_dataframe)

# I-convert ang DataFrame na ito sa csv na may mga partikular na column

pyspark_pandas_dataframe.to_csv( 'pyspark_pandas1' , columns=[ 'tao' , 'premyo' ])

Output:

Makikita natin na ang PySpark Pandas DataFrame ay na-convert sa CSV na may dalawang partition. Ang bawat partition ay mayroong 2 record. Gayundin, ang mga column sa CSV ay 'tao' at 'premyo' lang.

File ng Partition 1:

File ng Partition 2:

Halimbawa 2: Gamit ang Header Parameter

Gamitin ang nakaraang DataFrame at tukuyin ang parameter ng header sa pamamagitan ng pagtatakda nito sa “True”.

mula sa pyspark import panda

pyspark_pandas_dataframe=pandas.DataFrame({ 'id' :[ 90 , 78 , 90 , 57 ], 'tao' :[ 'Honey' , 'Mouni' , 'sarili' , 'radha' ], 'premyo' :[ 1 , 2 , 3 , 4 ]})

# I-convert ang DataFrame na ito sa csv na may header.

pyspark_pandas_dataframe.to_csv( 'pyspark_pandas2' , header =Totoo)

CSV Output:

Makikita natin na ang PySpark Pandas DataFrame ay na-convert sa CSV na may dalawang partition. Ang bawat partition ay mayroong 2 record na may mga pangalan ng column.

File ng Partition 1:

File ng Partition 2:

PySpark Pandas DataFrame sa CSV sa pamamagitan ng Pag-convert sa NumPy Array

Mayroon kaming opsyon na i-convert ang PySpark Pandas DataFrame sa CSV sa pamamagitan ng pag-convert sa Numpy array. Ang to_numpy() ay isang paraan na available sa PySpark Pandas module na nagko-convert ng PySpark Pandas DataFrame sa NumPy array.

Syntax:

pyspark_pandas_dataframe_obj.to_numpy()

Hindi ito kukuha ng anumang mga parameter.

Gamit ang Tofile() Method

Pagkatapos mag-convert sa NumPy array, maaari naming gamitin ang tofile() method para i-convert ang NumPy sa CSV. Dito, iniimbak nito ang bawat tala sa isang bagong cell columnar wise sa CSV file.

Syntax:

array_obj.to_numpy(filename/path,sep=’ ’)

Kinukuha nito ang pangalan ng file o path ng isang CSV at isang separator.

Halimbawa:

Lumikha ng PySpark Pandas DataFrame na may 3 column at 4 na record at i-convert ito sa CSV sa pamamagitan ng unang pag-convert nito sa NumPy array.

mula sa pyspark import panda

pyspark_pandas_dataframe=pandas.DataFrame({ 'id' :[ 90 , 78 , 90 , 57 ], 'tao' :[ 'Honey' , 'Mouni' , 'sarili' , 'radha' ], 'premyo' :[ 1 , 2 , 3 , 4 ]})

# I-convert ang DataFrame sa itaas sa numpy array

na-convert = pyspark_pandas_dataframe.to_numpy()

print(na-convert)

# Paggamit ng tofile()

converted.tofile( 'converted1.csv' , sep = ',' )

Output:

[[ 90 'Honey' 1 ]

[ 78 'Mouni' 2 ]

[ 90 'sarili' 3 ]

[ 57 'radha' 4 ]]

Makikita natin na ang PySpark Pandas DataFrame ay na-convert sa isang NumPy array (12 values). Kung nakikita mo ang data ng CSV, iniimbak nito ang bawat halaga ng cell sa isang bagong column.

PySpark DataFrame sa CSV Gamit ang Write.Csv() Method

Kinukuha ng write.csv() method ang file name/path kung saan kailangan nating i-save ang CSV file bilang parameter.

Syntax:

dataframe_object.coalesce( 1 ).write.csv( 'file_name' )

Sa totoo lang, ang CSV ay nai-save bilang mga partisyon (higit sa isa). Upang maalis ito, pinagsama namin ang lahat ng nahati na CSV file sa isa. Sa sitwasyong ito, ginagamit namin ang coalesce() function. Ngayon, isang CSV file lang ang makikita natin kasama ang lahat ng row mula sa PySpark DataFrame.

Halimbawa:

Isaalang-alang ang PySpark DataFrame na may 4 na tala na mayroong 4 na column. Isulat ang DataFrame na ito sa CSV gamit ang file na pinangalanang 'market_details'.

import pyspark

mula sa pyspark.sql import SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Linux Hint' ).getOrCreate()

# market data na may 4 na row at 4 na column

merkado =[{ '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' : 'swerte' },

{ 'm_id' : 'mz-003' , 'm_name' : 'PQR' , 'm_city' : 'florida' , 'm_state' : 'isa' },

{ 'm_id' : 'mz-004' , 'm_name' : 'ABC' , 'm_city' : 'delhi' , 'm_state' : 'swerte' }

]



# lumikha ng dataframe ng merkado mula sa data sa itaas

market_df = linuxhint_spark_app.createDataFrame(market)

# Aktwal na data ng merkado

market_df.show()

# write.csv()

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

Output:

Suriin natin ang file:

Buksan ang huling file upang makita ang mga talaan.

Konklusyon

Natutunan namin ang apat na magkakaibang mga sitwasyon na nagko-convert sa PySpark DataFrame sa CSV na may mga halimbawa sa pamamagitan ng pagsasaalang-alang sa iba't ibang mga parameter. Kapag nagtatrabaho ka sa PySpark DataFrame, mayroon kang dalawang opsyon upang i-convert ang DataFrame na ito sa CSV: ang isang paraan ay ang paggamit ng write() na paraan at ang isa pa ay ang paggamit ng to_csv() na paraan sa pamamagitan ng pag-convert sa Pandas DataFrame. Kung nagtatrabaho ka sa PySpark Pandas DataFrame, maaari mo ring gamitin ang to_csv() at tofile() sa pamamagitan ng pag-convert sa NumPy array.