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