PySpark Branje CSV()

Pyspark Branje Csv



Konstruiranje PySpark DataFrame iz podatkov CSV je možno v PySparku s funkcijo read.csv(). V nekaterih scenarijih, če želite naložiti zunanje podatke v PySpark DataFrame, PySpark podpira številne formate, kot so JSON, CSV itd. V tej vadnici bomo videli, kako prebrati podatke CSV in jih naložiti v PySpark DataFrame. Razpravljali bomo tudi o nalaganju več datotek CSV hkrati v en DataFrame s primeri.

Pyspark.sql.DataFrameReader.csv()

Ta metoda se uporablja za branje podatkov iz datotek CSV in njihovo shranjevanje v PySpark DataFrame. Med branjem CSV v DataFrame uporablja možnosti. Podrobno bomo obravnavali različne možnosti s primeri. Pri posredovanju več kot ene datoteke CSV je pomembno, da posredujete imena datotek s končnico na seznamu, ki je ločen z operatorjem vejice. Če berete samo eno datoteko CSV, ni treba navesti imena datoteke na seznamu.

Sintaksa:







Ena datoteka - spark_app.read.csv('file.csv', opcije …)

Več datotek – spark_app.read.csv(['file1.csv','file2.csv',…],možnosti…)



Mogoče je tudi ločiti možnosti in imena datotek.



Ena datoteka – spark_app.read.options(options…).csv(‘file.csv’)





Več datotek – spark_app.read.options(options…).csv([‘file1.csv’,’file2.csv’,…])

Pred implementacijo naslednjih primerov namestite knjižnico PySpark.



pip namestite pyspark

Po uspešni namestitvi si lahko ogledate izhod, kot sledi:

1. scenarij: Branje glave datoteke CSV

Ustvarimo datoteko CSV z imenom »person_skill.csv« s 5 zapisi, ki je prikazana spodaj, in jo naložimo v PySpark DataFrame:

Parameter glave se uporablja za določanje imen stolpcev v PySpark DataFrame. Zavzame logično vrednost. Če je »True«, so dejanska imena stolpcev, ki obstajajo v datoteki CSV, podana v DataFrame. V nasprotnem primeru so podani c0, c1, c2… in dejanska imena stolpcev bodo vrstica. Najbolje je, da parameter glave nastavite na true.

Primer 1: Glava = True

uvozi pyspark

iz pyspark.sql uvozi SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Namig za Linux' ).getOrCreate()

# Naložite csv z imenom - person_skill.csv v spretnosti z oznakami stolpcev z glavo

spretnosti = linuxhint_spark_app.read.csv( 'person_skill.csv' , glava = res)

# Prikaži DataFrame

spretnosti.show()

Izhod:

Pojasnilo:

Vidimo lahko, da je PySpark DataFrame ustvarjen iz datoteke CSV z določenimi stolpci in vrsticami.

Za preverjanje stolpcev uporabite naslednji ukaz:

spretnosti.stolpci

Primer 2: Glava = False

uvozi pyspark

iz pyspark.sql uvozi SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Namig za Linux' ).getOrCreate()

# Naložite csv z imenom - person_skill.csv v spretnosti z oznakami stolpcev brez glave

spretnosti = linuxhint_spark_app.read.csv( 'person_skill.csv' , glava =False)

# Prikaži DataFrame

spretnosti.show()

Izhod:

Pojasnilo:

Vidimo lahko, da je PySpark DataFrame ustvarjen iz datoteke CSV brez obstoječih stolpcev.

Poleg tega so obstoječi stolpci shranjeni kot vrstice v PySpark DataFrame.

spretnosti.stolpci

Uporaba Read.options.csv()

Zdaj preberemo datoteko CSV z metodo read.options.csv(). Tukaj moramo posredovati možnosti, kot so ločilo, glava itd., kot argumente in ime datoteke v csv(). Posredujmo parameter glave tako, da ga nastavimo na »True«.

1. scenarij:

uvozi pyspark

iz pyspark.sql uvozi SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Namig za Linux' ).getOrCreate()

# Uporaba read.options.csv()

spretnosti = linuxhint_spark_app.read. opcije ( glava =True).csv( 'person_skill.csv' )

# Prikaži DataFrame

spretnosti.show()

Izhod:

2. scenarij: Branje ločila datoteke CSV

Parameter ločilo vzame znak, ki se uporablja za ločevanje posameznih polj. Privzeto uporablja vejico (,). Uporabimo isto datoteko CSV, ki je bila uporabljena v prvem scenariju, in kot ločilo posredujmo vejico (',').

uvozi pyspark

iz pyspark.sql uvozi SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Namig za Linux' ).getOrCreate()

# Uporaba read.options.csv() z ločilom skupaj z glavo

spretnosti = linuxhint_spark_app.read. opcije ( glava =True,delimiter= ',' ).csv( 'person_skill.csv' )

# Prikaži DataFrame

spretnosti.show()

Izhod:

Branje več datotek

Do sedaj smo brali eno samo datoteko CSV. Poglejmo, kako prebrati več kot eno datoteko CSV. V tem scenariju so vrstice v več datotekah dodane v en PySpark DataFrame. Samo posredovati moramo imena datotek na seznamu znotraj metode.

primer:

Imejmo naslednji datoteki CSV z imenom »person_skill.csv« in »person_skill2.csv« z naslednjimi podatki:


Preberite ti dve datoteki CSV in ju shranite v en PySpark DataFrame.

uvozi pyspark

iz pyspark.sql uvozi SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Namig za Linux' ).getOrCreate()

# Naloži 2 datoteki csv z imenom - person_skill.csv in person_skill2.csv v spretnosti z oznakami stolpcev z glavo

spretnosti = linuxhint_spark_app.read.csv([ 'person_skill.csv' , 'person_skill2.csv' ],sep= ',' , glava = res)

spretnosti.show()

Izhod:

Pojasnilo:

Prvi CSV vsebuje 6 zapisov, drugi CSV pa 3 zapise. Vidimo lahko, da se prvi CSV najprej naloži v DataFrame. Nato se naloži drugi CSV. Končno ima PySpark DataFrame 9 zapisov.

Zaključek

Branje CSV v PySpark DataFrame je precej preprosto z metodo pyspark.sql.DataFrameReader.csv(). Parametra glave in ločila je mogoče posredovati tej metodi, da se določijo stolpci in oblika. PySpark podpira tudi branje več datotek CSV hkrati s ponujenimi metodami skupaj z njihovimi možnostmi. V tem članku smo si ogledali primere z upoštevanjem različnih možnosti. Videli smo tudi dva načina posredovanja možnosti metodi.