PySpark Leggi CSV()

Pyspark Leggi Csv



La costruzione di PySpark DataFrame dai dati CSV è possibile in PySpark utilizzando la funzione read.csv(). In alcuni scenari, se vuoi caricare i dati esterni nel PySpark DataFrame, PySpark supporta molti formati come JSON, CSV, ecc. In questo tutorial, vedremo come leggere i dati CSV e caricarli nel PySpark DataFrame. Inoltre, discuteremo il caricamento di più file CSV in un singolo DataFrame alla volta con esempi.

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 pyspark

da 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 pyspark

da 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 pyspark

da 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 pyspark

da 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 pyspark

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