Pyspark.sql.DataFrameReader.csv()
Tato metoda se používá ke čtení dat ze souboru/souborů CSV a jejich ukládání do PySpark DataFrame. Přebírá možnosti při čtení CSV do DataFrame. Podrobně probereme různé možnosti s příklady. Při předávání více než jednoho souboru CSV je důležité předávat názvy souborů s příponou v seznamu, který je oddělen operátorem čárky. Pokud čtete pouze jeden soubor CSV, není nutné uvádět název souboru v seznamu.
Syntax:
Jeden soubor - spark_app.read.csv(‘soubor.csv‘, možnosti …)
Více souborů – spark_app.read.csv([‘soubor1.csv’,’soubor2.csv’,…],možnosti…)
Je také možné oddělit možnosti a názvy souborů.
Jeden soubor – spark_app.read.options(options…).csv(‘soubor.csv’)
Více souborů – spark_app.read.options(options…).csv([‘soubor1.csv‘,‘soubor2.csv‘,…])
Před implementací následujících příkladů nainstalujte knihovnu PySpark.
pip nainstalovat pyspark
Po úspěšné instalaci můžete vidět výstup takto:
Scénář 1: Čtení záhlaví souboru CSV
Vytvořme soubor CSV s názvem „person_skill.csv“ s 5 záznamy, který je zobrazen níže, a načteme jej do PySpark DataFrame:
Parametr záhlaví se používá k určení názvů sloupců v PySpark DataFrame. Vyžaduje booleovskou hodnotu. Pokud je to „True“, skutečné názvy sloupců, které existují v souboru CSV, jsou specifikovány v DataFrame, V opačném případě jsou zadány c0, c1, c2… a skutečné názvy sloupců budou řádek. Nejvhodnější je nastavit parametr záhlaví na hodnotu true.
Příklad 1: Záhlaví = True
importovat pysparkz pyspark.sql importujte SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Linux Hint' ).getOrCreate()
# Načtěte soubor csv s názvem - person_skill.csv do dovedností s popisky sloupců s hlavičkou
dovednosti = linuxhint_spark_app.read.csv( 'person_skill.csv' , záhlaví = Pravda)
# Zobrazte DataFrame
skills.show()
Výstup:
Vysvětlení:
Vidíme, že PySpark DataFrame je vytvořen ze souboru CSV se zadanými sloupci a řádky.
Ke kontrole sloupců použijte následující příkaz:
dovednosti.sloupce
Příklad 2: Záhlaví = False
importovat pysparkz pyspark.sql importujte SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Linux Hint' ).getOrCreate()
# Načtěte soubor csv s názvem - person_skill.csv do dovedností s popisky sloupců bez záhlaví
dovednosti = linuxhint_spark_app.read.csv( 'person_skill.csv' , záhlaví = nepravda)
# Zobrazte DataFrame
skills.show()
Výstup:
Vysvětlení:
Vidíme, že PySpark DataFrame je vytvořen ze souboru CSV bez existujících sloupců.
Stávající sloupce jsou také uloženy jako řádky v PySpark DataFrame.
dovednosti.sloupce
Použití Read.options.csv()
Nyní čteme soubor CSV pomocí metody read.options.csv(). Zde musíme předat možnosti jako oddělovač, záhlaví atd. v možnostech jako argumenty a název souboru v csv(). Předáme parametr záhlaví jeho nastavením na „True“.
Scénář 1:
importovat pysparkz pyspark.sql importujte SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Linux Hint' ).getOrCreate()
# Použití read.options.csv()
dovednosti = linuxhint_spark_app.read. možnosti ( záhlaví =True).csv( 'person_skill.csv' )
# Zobrazte DataFrame
skills.show()
Výstup:
Scénář 2: Čtení oddělovače souboru CSV
Parametr oddělovače přebírá znak, který se používá k oddělení každého pole. Ve výchozím nastavení trvá čárku (,). Použijme stejný soubor CSV jako v prvním scénáři a jako oddělovač předáme čárku (‘,’).
importovat pysparkz pyspark.sql importujte SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Linux Hint' ).getOrCreate()
# Použití read.options.csv() s oddělovačem spolu se záhlavím
dovednosti = linuxhint_spark_app.read. možnosti ( záhlaví =Pravda, oddělovač= ',' .csv( 'person_skill.csv' )
# Zobrazte DataFrame
skills.show()
Výstup:
Čtení více souborů
Doposud jsme četli jeden soubor CSV. Podívejme se, jak číst více než jeden soubor CSV. V tomto scénáři jsou řádky ve více souborech připojeny do jednoho PySpark DataFrame. Potřebujeme pouze předat názvy souborů v seznamu v rámci metody.
Příklad:
Mějme následující soubory CSV s názvem „person_skill.csv“ a „person_skill2.csv“ s následujícími údaji:
Přečtěte si tyto dva soubory CSV a uložte je do jednoho datového rámce PySpark.
importovat pysparkz pyspark.sql importujte SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Linux Hint' ).getOrCreate()
# Načtěte 2 soubory csv s názvem - person_skill.csv a person_skill2.csv do dovedností s popisky sloupců s hlavičkou
dovednosti = linuxhint_spark_app.read.csv([ 'person_skill.csv' , 'person_skill2.csv' ], sep= ',' , záhlaví = Pravda)
skills.show()
Výstup:
Vysvětlení:
První CSV má 6 záznamů a druhý CSV má 3 záznamy. Vidíme, že první CSV se načte do DataFrame jako první. Poté se načte druhý CSV. Nakonec PySpark DataFrame uchovává 9 záznamů.
Závěr
Čtení CSV do PySpark DataFrame je docela jednoduché pomocí metody pyspark.sql.DataFrameReader.csv(). Této metodě může být možné předat parametry záhlaví a oddělovače, aby bylo možné určit sloupce a formát. PySpark také podporuje čtení více souborů CSV najednou pomocí poskytovaných metod spolu s jejich možnostmi. V tomto článku jsme viděli příklady při zvažování různých možností. Také jsme viděli dva způsoby předání možností metodě.