PySpark Les CSV()

Pyspark Les Csv



Å konstruere PySpark DataFrame fra CSV-dataene er mulig i PySpark ved å bruke read.csv()-funksjonen. I noen scenarier, hvis du ønsker å laste de eksterne dataene inn i PySpark DataFrame, støtter PySpark mange formater som JSON, CSV, etc. I denne opplæringen vil vi se hvordan du leser CSV-dataene og laster dem inn i PySpark DataFrame. Vi vil også diskutere lasting av flere CSV-filer i en enkelt DataFrame om gangen med eksempler.

Pyspark.sql.DataFrameReader.csv()

Denne metoden brukes til å lese dataene fra CSV-filene og lagre dem i PySpark DataFrame. Den tar alternativene mens du leser CSV inn i DataFrame. Vi vil diskutere de forskjellige alternativene med eksempler i detalj. Når du sender mer enn én CSV-fil, er det viktig å sende filnavnene med filtypen i en liste som er atskilt med kommaoperatoren. Hvis du bare leser én CSV-fil, er det ikke nødvendig å oppgi filnavnet i en liste.

Syntaks:







Enkelt fil - spark_app.read.csv('file.csv', alternativer …)

Flere filer – spark_app.read.csv(['fil1.csv','fil2.csv',...],alternativer...)



Det kan også være mulig å skille alternativene og filnavnene.



Enkeltfil – spark_app.read.options(options...).csv(‘file.csv’)





Flere filer – spark_app.read.options(options...).csv(['fil1.csv','fil2.csv',...])

Installer PySpark-biblioteket før du implementerer følgende eksempler.



pip installer pyspark

Etter vellykket installasjon kan du se utdataene som følger:

Scenario 1: Lese CSV-filoverskriften

La oss lage en CSV-fil med navnet 'person_skill.csv' med 5 poster som vises i det følgende og laste den inn i PySpark DataFrame:

Overskriftsparameteren brukes til å spesifisere kolonnenavnene i PySpark DataFrame. Det krever en boolsk verdi. Hvis det er 'True', spesifiseres de faktiske kolonnenavnene som finnes i CSV-filen i DataFrame, ellers spesifiseres c0, c1, c2... og de faktiske kolonnenavnene vil være en rad. Det er best å praktisere å sette overskriftsparameteren til sann.

Eksempel 1: Overskrift = Sant

importere pyspark

fra pyspark.sql importer SparkSession

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

# Last inn csv-en med navn - person_skill.csv i ferdigheter med kolonneetiketter med overskrift

ferdigheter = linuxhint_spark_app.read.csv( 'person_skill.csv' , Overskrift =sant)

# Vis DataFrame

skills.show()

Produksjon:

Forklaring:

Vi kan se at PySpark DataFrame er opprettet fra CSV-filen med spesifiserte kolonner og rader.

Bruk følgende kommando for å sjekke kolonnene:

ferdigheter.kolonner

Eksempel 2: Header = False

importere pyspark

fra pyspark.sql importer SparkSession

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

# Last inn csv-en med navn - person_skill.csv i ferdigheter med kolonneetiketter uten overskrift

ferdigheter = linuxhint_spark_app.read.csv( 'person_skill.csv' , Overskrift =False)

# Vis DataFrame

skills.show()

Produksjon:

Forklaring:

Vi kan se at PySpark DataFrame er opprettet fra CSV-filen uten eksisterende kolonner.

De eksisterende kolonnene lagres også som rader i PySpark DataFrame.

ferdigheter.kolonner

Bruke Read.options.csv()

Nå leser vi CSV-filen ved å bruke read.options.csv()-metoden. Her må vi sende alternativene som skilletegn, overskrift osv. i alternativene som argumenter og filnavn i csv(). La oss sende overskriftsparameteren ved å sette den til 'True'.

Scenario 1:

importere pyspark

fra pyspark.sql importer SparkSession

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

# Bruke read.options.csv()

ferdigheter = linuxhint_spark_app.read. alternativer ( Overskrift =True).csv( 'person_skill.csv' )

# Vis DataFrame

skills.show()

Produksjon:

Scenario 2: Lese CSV-filavgrenseren

Avgrensningsparameteren tar tegnet som brukes til å skille hvert felt. Det tar et komma (,) som standard. La oss bruke den samme CSV-filen som brukes i det første scenariet og sende kommaet (',') som skilletegnet.

importere pyspark

fra pyspark.sql importer SparkSession

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

# Bruk av read.options.csv() med skilletegn sammen med overskrift

ferdigheter = linuxhint_spark_app.read. alternativer ( Overskrift =Sant, skilletegn= ',' ).csv( 'person_skill.csv' )

# Vis DataFrame

skills.show()

Produksjon:

Lese flere filer

Til nå har vi lest en enkelt CSV-fil. La oss se hvordan du leser mer enn én CSV-fil. I dette scenariet legges radene i flere filer til i en enkelt PySpark DataFrame. Vi trenger bare å sende filnavnene i en liste i metoden.

Eksempel:

La oss ha følgende CSV-filer kalt «person_skill.csv» og «person_skill2.csv» med følgende data:


Les disse to CSV-filene og lagre dem i en enkelt PySpark DataFrame.

importere pyspark

fra pyspark.sql importer SparkSession

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

# Last inn 2 csv-filer med navn - person_skill.csv og person_skill2.csv i ferdigheter med kolonneetiketter med overskrift

ferdigheter = linuxhint_spark_app.read.csv([ 'person_skill.csv' , 'person_skill2.csv' ],sep= ',' , Overskrift =sant)

skills.show()

Produksjon:

Forklaring:

Den første CSV-en har 6 poster og den andre CSV-en har 3 poster. Vi kan se at den første CSV-en lastes inn i DataFrame først. Deretter lastes den andre CSV-en. Til slutt har PySpark DataFrame 9 poster.

Konklusjon

Å lese CSV-en inn i PySpark DataFrame er ganske enkelt med pyspark.sql.DataFrameReader.csv()-metoden. Det kan være mulig å overføre parametrene overskrift og skilletegn til denne metoden for å spesifisere kolonnene og formatet. PySpark støtter også lesing av flere CSV-filer om gangen med de angitte metodene sammen med alternativene deres. I denne artikkelen har vi sett eksemplene ved å vurdere ulike alternativer. Vi har også sett to måter å overføre alternativene til metoden.