PySpark lasīt CSV()

Pyspark Lasit Csv



PySpark DataFrame konstruēšana no CSV datiem ir iespējama PySpark, izmantojot funkciju read.csv(). Dažos gadījumos, ja vēlaties ielādēt ārējos datus PySpark DataFrame, PySpark atbalsta daudzus formātus, piemēram, JSON, CSV utt. Šajā apmācībā mēs redzēsim, kā nolasīt CSV datus un ielādēt tos PySpark DataFrame. Mēs arī apspriedīsim vairāku CSV failu ielādi vienā DataFrame vienlaikus ar piemēriem.

Pyspark.sql.DataFrameReader.csv()

Šo metodi izmanto, lai nolasītu datus no CSV faila/-iem un saglabātu tos PySpark DataFrame. Tas izmanto opcijas, lasot CSV failu DataFrame. Mēs detalizēti apspriedīsim dažādas iespējas ar piemēriem. Nododot vairāk nekā vienu CSV failu, ir svarīgi nodot failu nosaukumus ar paplašinājumiem sarakstā, kas ir atdalīts ar komatu. Ja lasāt tikai vienu CSV failu, faila nosaukums sarakstā nav jānorāda.

Sintakse:







Viens fails — spark_app.read.csv('file.csv', iespējas …)

Vairāki faili – spark_app.read.csv (['file1.csv','file2.csv',…], opcijas…)



Var būt arī iespējams atdalīt opcijas un failu nosaukumus.



Viens fails – spark_app.read.options(options…).csv('file.csv')





Vairāki faili – spark_app.read.options(options…).csv(['fails1.csv','file2.csv',…])

Pirms tālāk norādīto piemēru ieviešanas instalējiet PySpark bibliotēku.



pip instalēt pyspark

Pēc veiksmīgas instalēšanas rezultātu var redzēt šādi:

1. scenārijs: CSV faila galvenes lasīšana

Izveidosim CSV failu ar nosaukumu “person_skill.csv” ar 5 ierakstiem, kas parādīts tālāk, un ielādēsim to PySpark DataFrame:

Galvenes parametrs tiek izmantots, lai norādītu kolonnu nosaukumus PySpark DataFrame. Tam nepieciešama Būla vērtība. Ja tas ir “True”, faktiskie kolonnu nosaukumi, kas atrodas CSV failā, ir norādīti DataFrame, pretējā gadījumā tiek norādīti c0, c1, c2… un faktiskie kolonnu nosaukumi būs rinda. Vislabāk ir iestatīt galvenes parametru uz True.

1. piemērs: galvene = patiess

importēt pyspark

no pyspark.sql importēt SparkSession

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

# Ielādējiet csv failu ar nosaukumu - person_skill.csv prasmēs ar kolonnu etiķetēm ar galveni

prasmes = linuxhint_spark_app.read.csv( 'person_skill.csv' , galvene =Tiesa)

# Parādiet DataFrame

prasmes.show()

Izvade:

Paskaidrojums:

Mēs redzam, ka PySpark DataFrame ir izveidots no CSV faila ar noteiktām kolonnām un rindām.

Izmantojiet šo komandu, lai pārbaudītu kolonnas:

prasmes.kolonnas

2. piemērs: galvene = False

importēt pyspark

no pyspark.sql importēt SparkSession

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

# Ielādējiet csv failu ar nosaukumu - person_skill.csv prasmēs ar kolonnu etiķetēm bez galvenes

prasmes = linuxhint_spark_app.read.csv( 'person_skill.csv' , galvene =Nepatiesi)

# Parādiet DataFrame

prasmes.show()

Izvade:

Paskaidrojums:

Mēs redzam, ka PySpark DataFrame ir izveidots no CSV faila bez esošām kolonnām.

Arī esošās kolonnas tiek saglabātas kā rindas PySpark DataFrame.

prasmes.kolonnas

Izmantojot Read.options.csv()

Tagad mēs lasām CSV failu, izmantojot metodi read.options.csv(). Šeit mums ir jānodod tādas opcijas kā atdalītājs, galvene utt. opcijās kā argumenti un faila nosaukums failā csv (). Nodosim galvenes parametru, iestatot to uz “True”.

1. scenārijs:

importēt pyspark

no pyspark.sql importēt SparkSession

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

# Izmantojot read.options.csv()

prasmes = linuxhint_spark_app.read. iespējas ( galvene =True).csv( 'person_skill.csv' )

# Parādiet DataFrame

prasmes.show()

Izvade:

2. scenārijs: CSV faila norobežotāja lasīšana

Norobežotāja parametrs aizņem rakstzīmi, kas tiek izmantota katra lauka atdalīšanai. Pēc noklusējuma tas aizņem komatu (,). Izmantosim to pašu CSV failu, kas tiek izmantots pirmajā scenārijā, un kā atdalītāju ievietosim komatu (',').

importēt pyspark

no pyspark.sql importēt SparkSession

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

# Izmantojot read.options.csv() ar atdalītāju kopā ar galveni

prasmes = linuxhint_spark_app.read. iespējas ( galvene =Patiess, norobežotājs= ',' .csv( 'person_skill.csv' )

# Parādiet DataFrame

prasmes.show()

Izvade:

Vairāku failu lasīšana

Līdz šim mēs esam lasījuši vienu CSV failu. Apskatīsim, kā lasīt vairāk nekā vienu CSV failu. Šajā scenārijā rindas vairākos failos tiek pievienotas vienā PySpark DataFrame. Mums vienkārši jānodod failu nosaukumi sarakstā metodes ietvaros.

Piemērs:

Iegūsim šādus CSV failus ar nosaukumu “person_skill.csv” un “person_skill2.csv” ar šādiem datiem:


Izlasiet šos divus CSV failus un saglabājiet tos vienā PySpark DataFrame.

importēt pyspark

no pyspark.sql importēt SparkSession

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

# Ielādējiet prasmēs 2 csv failus ar nosaukumu person_skill.csv un person_skill2.csv ar kolonnu etiķetēm ar galveni

prasmes = linuxhint_spark_app.read.csv([ 'person_skill.csv' , 'person_skill2.csv' ],sept= ',' , galvene =Tiesa)

prasmes.show()

Izvade:

Paskaidrojums:

Pirmajā CSV ir 6 ieraksti, bet otrajā CSV ir 3 ieraksti. Mēs redzam, ka pirmais CSV tiek ielādēts DataFrame vispirms. Pēc tam tiek ielādēts otrais CSV fails. Visbeidzot, PySpark DataFrame satur 9 ierakstus.

Secinājums

CSV nolasīšana PySpark DataFrame ir diezgan vienkārša, izmantojot pyspark.sql.DataFrameReader.csv() metodi. Šai metodei var būt iespējams nodot galvenes un norobežotāja parametrus, lai norādītu kolonnas un formātu. PySpark atbalsta arī vairāku CSV failu lasīšanu vienlaikus, izmantojot piedāvātās metodes, kā arī to iespējas. Šajā rakstā mēs esam redzējuši piemērus, apsverot dažādas iespējas. Mēs esam arī redzējuši divus veidus, kā opcijas pārnest uz metodi.