Pyspark.sql.DataFrameReader.csv()
Questo metodo viene utilizzato per leggere i dati dai file CSV e memorizzarli nel PySpark DataFrame. Prende le opzioni durante la lettura di CSV nel DataFrame. Discuteremo le diverse opzioni con esempi in dettaglio. Quando si passa più di un file CSV, è importante passare i nomi dei file con estensione in un elenco separato dall'operatore virgola. Se stai leggendo solo un file CSV, non è necessario fornire il nome del file in un elenco.
Sintassi:
File singolo - spark_app.read.csv('file.csv', opzioni …)
Più file – spark_app.read.csv(['file1.csv','file2.csv',...],opzioni...)
È anche possibile separare le opzioni ei nomi dei file.
File singolo – spark_app.read.options(opzioni…).csv('file.csv')
Più file – spark_app.read.options(opzioni...).csv(['file1.csv','file2.csv',...])
Installa la libreria PySpark prima di implementare gli esempi seguenti.
pip installa pyspark
Dopo l'installazione riuscita, puoi vedere l'output come segue:
Scenario 1: lettura dell'intestazione del file CSV
Creiamo un file CSV denominato 'person_skill.csv' con 5 record che è mostrato di seguito e lo carichiamo nel PySpark DataFrame:
Il parametro header viene utilizzato per specificare i nomi delle colonne in PySpark DataFrame. Prende un valore booleano. Se è 'True', i nomi di colonna effettivi che esistono nel file CSV sono specificati nel DataFrame, altrimenti, vengono specificati c0, c1, c2... e i nomi di colonna effettivi saranno una riga. È consigliabile impostare il parametro header su true.
Esempio 1: Intestazione = True
importa pysparkda pyspark.sql importa SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Suggerimento per Linux' ).getOrCreate()
# Carica il csv denominato - person_skill.csv nelle competenze con etichette di colonna con intestazione
competenze = linuxhint_spark_app.read.csv( 'persona_abilità.csv' , intestazione =Vero)
# Visualizza il DataFrame
competenze.mostra()
Produzione:
Spiegazione:
Possiamo vedere che il PySpark DataFrame viene creato dal file CSV con colonne e righe specificate.
Utilizzare il seguente comando per controllare le colonne:
competenze.colonne
Esempio 2: Intestazione = Falso
importa pysparkda pyspark.sql importa SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Suggerimento per Linux' ).getOrCreate()
# Carica il csv denominato - person_skill.csv nelle competenze con etichette di colonna senza intestazione
competenze = linuxhint_spark_app.read.csv( 'persona_abilità.csv' , intestazione =falso)
# Visualizza il DataFrame
competenze.mostra()
Produzione:
Spiegazione:
Possiamo vedere che il PySpark DataFrame viene creato dal file CSV senza colonne esistenti.
Inoltre, le colonne esistenti vengono archiviate come righe nel PySpark DataFrame.
competenze.colonne
Utilizzo di Read.options.csv()
Ora leggiamo il file CSV usando il metodo read.options.csv(). Qui, dobbiamo passare le opzioni come delimitatore, intestazione, ecc. nelle opzioni come argomenti e nome file in csv(). Passiamo il parametro header impostandolo su 'True'.
Scenario 1:
importa pysparkda pyspark.sql importa SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Suggerimento per Linux' ).getOrCreate()
# Utilizzo di read.options.csv()
competenze = linuxhint_spark_app.read. opzioni ( intestazione =Vero).csv( 'persona_abilità.csv' )
# Visualizza il DataFrame
competenze.mostra()
Produzione:
Scenario 2: lettura del delimitatore di file CSV
Il parametro delimitatore accetta il carattere utilizzato per separare ciascun campo. Ci vuole una virgola (,) per impostazione predefinita. Utilizziamo lo stesso file CSV utilizzato nel primo scenario e passiamo la virgola (',') come delimitatore.
importa pysparkda pyspark.sql importa SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Suggerimento per Linux' ).getOrCreate()
# Utilizzo di read.options.csv() con delimitatore insieme all'intestazione
competenze = linuxhint_spark_app.read. opzioni ( intestazione =Vero,delimitatore= ',' ).csv( 'persona_abilità.csv' )
# Visualizza il DataFrame
competenze.mostra()
Produzione:
Lettura di più file
Fino ad ora, abbiamo letto un singolo file CSV. Vediamo come leggere più di un file CSV. In questo scenario, le righe in più file vengono accodate in un singolo PySpark DataFrame. Abbiamo solo bisogno di passare i nomi dei file in un elenco all'interno del metodo.
Esempio:
Prendiamo i seguenti file CSV denominati 'person_skill.csv' e 'person_skill2.csv' con i seguenti dati:
Leggi questi due file CSV e archiviali in un singolo PySpark DataFrame.
importa pysparkda pyspark.sql importa SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Suggerimento per Linux' ).getOrCreate()
# Carica 2 file csv denominati - person_skill.csv e person_skill2.csv nelle competenze con etichette di colonna con intestazione
competenze = linuxhint_spark_app.read.csv([ 'persona_abilità.csv' , 'persona_abilità2.csv' ],set= ',' , intestazione =Vero)
competenze.mostra()
Produzione:
Spiegazione:
Il primo CSV contiene 6 record e il secondo CSV contiene 3 record. Possiamo vedere che il primo CSV viene caricato prima nel DataFrame. Quindi, viene caricato il secondo CSV. Infine, il PySpark DataFrame contiene 9 record.
Conclusione
Leggere il CSV nel PySpark DataFrame è abbastanza semplice con il metodo pyspark.sql.DataFrameReader.csv(). È possibile passare i parametri di intestazione e delimitatore a questo metodo per specificare le colonne e il formato. PySpark supporta anche la lettura di più file CSV alla volta con i metodi forniti insieme alle loro opzioni. In questo articolo, abbiamo visto gli esempi considerando diverse opzioni. Inoltre, abbiamo visto due modi per passare le opzioni al metodo.