Pyspark.sql.DataFrameReader.csv()
Ta metoda służy do odczytywania danych z plików CSV i przechowywania ich w PySpark DataFrame. Pobiera opcje podczas wczytywania CSV do DataFrame. Omówimy szczegółowo różne opcje z przykładami. Podczas przekazywania więcej niż jednego pliku CSV ważne jest, aby nazwy plików z rozszerzeniem były przekazywane na liście oddzielonej operatorem przecinka. Jeśli czytasz tylko jeden plik CSV, nie ma potrzeby podawania nazwy pliku na liście.
Składnia:
Pojedynczy plik - spark_app.read.csv('file.csv', opcje …)
Wiele plików – spark_app.read.csv(['plik1.csv','plik2.csv',...],opcje...)
Możliwe jest również oddzielenie opcji i nazw plików.
Pojedynczy plik – spark_app.read.options(options…).csv('plik.csv')
Wiele plików – spark_app.read.options(options…).csv(['plik1.csv','plik2.csv',...])
Zainstaluj bibliotekę PySpark przed zaimplementowaniem poniższych przykładów.
pip zainstaluj pyspark
Po udanej instalacji możesz zobaczyć dane wyjściowe w następujący sposób:
Scenariusz 1: Odczytywanie nagłówka pliku CSV
Utwórzmy plik CSV o nazwie „person_skill.csv” z 5 rekordami, który pokazano poniżej i załadujmy go do PySpark DataFrame:
Parametr header służy do określania nazw kolumn w PySpark DataFrame. Przyjmuje wartość logiczną. Jeśli jest to „True”, rzeczywiste nazwy kolumn, które istnieją w pliku CSV, są określone w DataFrame, w przeciwnym razie określone są c0, c1, c2… i rzeczywiste nazwy kolumn będą wierszami. Najlepiej jest ustawić parametr nagłówka na wartość true.
Przykład 1: Nagłówek = Prawda
zaimportuj pysparkz pyspark.sql zaimportuj SparkSession
linuxhint_spark_app = SparkSession.builder.appName( „Wskazówka dotycząca Linuksa” .getOrCreate()
# Załaduj csv o nazwie - person_skill.csv do umiejętności z etykietami kolumn z nagłówkiem
umiejętności = linuxhint_spark_app.read.csv( „person_skill.csv” , nagłówek = Prawda)
# Wyświetl ramkę danych
umiejętności.pokaż()
Wyjście:
Wyjaśnienie:
Widzimy, że PySpark DataFrame jest tworzony z pliku CSV z określonymi kolumnami i wierszami.
Użyj następującego polecenia, aby sprawdzić kolumny:
umiejętności.kolumny
Przykład 2: Nagłówek = Fałsz
zaimportuj pysparkz pyspark.sql zaimportuj SparkSession
linuxhint_spark_app = SparkSession.builder.appName( „Wskazówka dotycząca Linuksa” .getOrCreate()
# Załaduj csv o nazwie - person_skill.csv do umiejętności z etykietami kolumn bez nagłówka
umiejętności = linuxhint_spark_app.read.csv( „person_skill.csv” , nagłówek = Fałsz)
# Wyświetl ramkę danych
umiejętności.pokaż()
Wyjście:
Wyjaśnienie:
Widzimy, że PySpark DataFrame jest tworzony z pliku CSV bez istniejących kolumn.
Ponadto istniejące kolumny są przechowywane jako wiersze w PySpark DataFrame.
umiejętności.kolumny
Korzystanie z funkcji Read.options.csv()
Teraz odczytujemy plik CSV za pomocą metody read.options.csv(). Tutaj musimy przekazać opcje takie jak ogranicznik, nagłówek itp. w opcjach jako argumenty i nazwę pliku w funkcji csv(). Przekażmy parametr nagłówka, ustawiając go na „True”.
Scenariusz 1:
zaimportuj pysparkz pyspark.sql zaimportuj SparkSession
linuxhint_spark_app = SparkSession.builder.appName( „Wskazówka dotycząca Linuksa” .getOrCreate()
# Używanie read.options.csv()
umiejętności = linuxhint_spark_app.read. opcje ( nagłówek =Prawda).csv( „person_skill.csv” )
# Wyświetl ramkę danych
umiejętności.pokaż()
Wyjście:
Scenariusz 2: odczytywanie ogranicznika pliku CSV
Parametr delimiter przyjmuje znak, który jest używany do oddzielania każdego pola. Domyślnie zajmuje to przecinek (,). Użyjmy tego samego pliku CSV, który jest używany w pierwszym scenariuszu i przekażmy przecinek („,”) jako ogranicznik.
zaimportuj pysparkz pyspark.sql zaimportuj SparkSession
linuxhint_spark_app = SparkSession.builder.appName( „Wskazówka dotycząca Linuksa” .getOrCreate()
# Użycie read.options.csv() z ogranicznikiem wraz z nagłówkiem
umiejętności = linuxhint_spark_app.read. opcje ( nagłówek =Prawda, ogranicznik= ',' .csv( „person_skill.csv” )
# Wyświetl ramkę danych
umiejętności.pokaż()
Wyjście:
Czytanie wielu plików
Do tej pory odczytywaliśmy pojedynczy plik CSV. Zobaczmy, jak odczytać więcej niż jeden plik CSV. W tym scenariuszu wiersze w wielu plikach są dołączane do pojedynczej ramki danych PySpark. Musimy tylko przekazać nazwy plików na liście w metodzie.
Przykład:
Miejmy następujące pliki CSV o nazwach „person_skill.csv” i „person_skill2.csv” z następującymi danymi:
Przeczytaj te dwa pliki CSV i zapisz je w jednym PySpark DataFrame.
zaimportuj pysparkz pyspark.sql zaimportuj SparkSession
linuxhint_spark_app = SparkSession.builder.appName( „Wskazówka dotycząca Linuksa” .getOrCreate()
# Załaduj 2 pliki csv o nazwach - person_skill.csv i person_skill2.csv do umiejętności z etykietami kolumn z nagłówkiem
umiejętności = linuxhint_spark_app.read.csv([ „person_skill.csv” , „person_skill2.csv” ],wrzesień= ',' , nagłówek = Prawda)
umiejętności.pokaż()
Wyjście:
Wyjaśnienie:
Pierwszy CSV zawiera 6 rekordów, a drugi CSV zawiera 3 rekordy. Widzimy, że pierwszy plik CSV jest najpierw ładowany do DataFrame. Następnie ładowany jest drugi plik CSV. Wreszcie PySpark DataFrame zawiera 9 rekordów.
Wniosek
Wczytanie pliku CSV do PySpark DataFrame jest dość proste dzięki metodzie pyspark.sql.DataFrameReader.csv() . Możliwe jest przekazanie parametrów nagłówka i ogranicznika do tej metody w celu określenia kolumn i formatu. PySpark obsługuje również jednoczesne odczytywanie wielu plików CSV za pomocą dostarczonych metod wraz z ich opcjami. W tym artykule widzieliśmy przykłady, rozważając różne opcje. Widzieliśmy również dwa sposoby przekazywania opcji do metody.