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 pysparkfra 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 pysparkfra 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 pysparkfra 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 pysparkfra 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 pysparkfra 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.