Pyspark - Row_number Function

Pyspark - Row_number Function
È possibile partizione delle righe nel frame dati utilizzando la funzione finestra in pyspark,. È disponibile in pyspark.SQL.finestra modulo.

Il vantaggio della partizione è ottenere la coerenza e il raggruppamento dei dati. Dopo aver eseguito la partizione, possiamo fornire i numeri alla riga in ogni partizione usando il row_number () funzione.

È possibile partizione delle righe in un telaio di dati in base ai valori in una colonna particolare. Tutti i valori simili sono impostati su ogni partizione. Supponiamo che ci siano 3 tipi di valori simili, quindi ogni tipo è una partizione. Quindi, ci saranno tre partizioni.

Funzione row_number () finestra

Row_number in pyspark è una funzione finestra che viene utilizzata per impostare i numeri a partire da 1 in ogni finestra partizionata.

La cosa principale è che Row_number () non è disponibile direttamente. Dobbiamo importarlo dal pyspark.SQL.funzioni modulo.

Sintassi per importare il modulo:

da pyspark.SQL.Funzioni Importa Row_number

Altrimenti, possiamo anche fare così per importare tutti i metodi da questo modulo.

da pyspark.SQL.funzioni importanti *

Dobbiamo seguire i seguenti passaggi per eseguire la partizione e applicare la row_number sui dati partizionati.

Passaggi:

  1. Crea un frame dati pyspark che ha alcuni valori simili in almeno una colonna.
  2. Partizione I dati utilizzando il metodo PartitionBy () disponibili nella funzione della finestra e ordinarli in base alla colonna utilizzando la funzione orderBy ().

Sintassi:

partizione = finestra.Partitionby ("colonna").orderby ("colonna")

Possiamo ordinare i dati partizionati con la colonna partizionata o qualsiasi altra colonna.

  1. Ora è possibile utilizzare la funzione row_number () sulle righe partizionate usando il Sopra() funzione. Quindi, aggiungiamo una colonna per archiviare il numero di riga usando il withColumn () funzione.

Sintassi:

dataframe_obj.WithColumn ("nome", row_number ().Over (partizione))

Qui, il nome specifica il nome della riga e DataFrame_Obj è il nostro PysPark DataFrame.

Implementamoci il codice.

Esempio 1:

Qui, creiamo un frame dati pyspark che ha 5 colonne - ['soggetto_id', 'name', 'age', 'technology1', 'technology2'] con 10 righe e partizione le righe basate sul Tecnologia1 Utilizzo della funzione Finestra dopo aver ottenuto i numeri di riga per le partizioni e aggiungerli nella colonna - Riga per la tecnologia1.

importare pyspark
da pyspark.SQL Import *
Spark_app = SparkSession.costruttore.nome dell'applicazione('_').getOrCreate ()
Studenti = [(4, "Sravan", 23, "Php", "Test"),
(2, "Sravan", 23, "Oracle", "Test"),
(46, "Mounika", 22, ".Net ',' html '),
(12, "Deepika", 21, "Oracle", "HTML"),
(46, "Mounika", 22, "Oracle", "Test"),
(12, "Chandrika", 23, "Hadoop", "C#"),
(12, "Chandrika", 22, "Oracle", "Test"),
(45, "Sravan", 23, "Oracle", "C#"),
(4, "Deepika", 21, "Php", "C#"),
(46, "Mounika", 22, ".Net ',' test ')
"
DataFrame_obj = Spark_app.CreateAtaFrame (Students, ['soggetto_id', 'name', 'age', 'technology1', 'technology2'])
print ("---------- Frame dati effettivo ----------")
dataframe_obj.spettacolo()
# Importa la funzione della finestra
da pyspark.SQL.finestra di importazione della finestra
#import the row_number da pyspark.SQL.funzioni
da pyspark.SQL.Funzioni Importa Row_number
#partition Il frame dati in base ai valori nella colonna Technology1 e
#ordina le righe in ogni partizione in base alla colonna soggetto_id
partizione = finestra.Partitionby ("Technology1").orderby ('soggetto_id')
print ("---------- DataFrame partizionato ----------")
#Now menzione numero di riga per ogni riga nella colonna di riga
dataframe_obj.WithColumn ("riga per tecnologia1", row_number ().Over (partizione)).spettacolo()

Produzione:

Spiegazione:

Il primo output rappresenta i dati effettivi presenti nel frame dati. Nel secondo output, la partizione viene eseguita in base al Tecnologia1 colonna.

Il numero totale di partizioni è 4.

Partizione 1:

IL .La rete si è verificata due volte nella prima partizione. Quindi, i row_numbers sono 1 e 2.

Partizione 2:

Hadoop si è verificato una volta nella seconda partizione. Quindi, il row_number è 1.

Partizione 3:

Oracle si è verificato cinque volte nella terza partizione. Quindi, i row_numbers sono 1, 2, 3, 4 e 5.

Partizione 4:

PHP si è verificato due volte nella quinta partizione. Quindi, i row_numbers sono 1 e 2.

Esempio 2:

Per lo stesso telaio di dati, partiamo le righe basate su Tecnologia2 Utilizzo della funzione Finestra dopo aver ottenuto i numeri di riga per le partizioni e aggiungerli in colonna - Riga per la tecnologia2.

importare pyspark
da pyspark.SQL Import *
Spark_app = SparkSession.costruttore.nome dell'applicazione('_').getOrCreate ()
Studenti = [(4, "Sravan", 23, "Php", "Test"),
(2, "Sravan", 23, "Oracle", "Test"),
(46, "Mounika", 22, ".Net ',' html '),
(12, "Deepika", 21, "Oracle", "HTML"),
(46, "Mounika", 22, "Oracle", "Test"),
(12, "Chandrika", 23, "Hadoop", "C#"),
(12, "Chandrika", 22, "Oracle", "Test"),
(45, "Sravan", 23, "Oracle", "C#"),
(4, "Deepika", 21, "Php", "C#"),
(46, "Mounika", 22, ".Net ',' test ')
"
DataFrame_obj = Spark_app.CreateAtaFrame (Students, ['soggetto_id', 'name', 'age', 'technology1', 'technology2'])
print ("---------- Frame dati effettivo ----------")
dataframe_obj.spettacolo()
# Importa la funzione della finestra
da pyspark.SQL.finestra di importazione della finestra
#import the row_number da pyspark.SQL.funzioni
da pyspark.SQL.Funzioni Importa Row_number
#partition Il frame dati in base ai valori nella colonna di tecnologia e
#ordina le righe in ogni partizione in base alla colonna soggetto_id
partizione = finestra.Partitionby ("Technology2").orderby ('soggetto_id')
print ("---------- DataFrame partizionato ----------")
#Now menzione numero di riga per ogni riga nella colonna di riga
dataframe_obj.WithColumn ("riga per tecnologia2", row_number ().Over (partizione)).spettacolo()

Produzione:

Spiegazione:

Il primo output rappresenta i dati effettivi presenti nel frame dati. Nel secondo output, la partizione viene eseguita in base al Tecnologia2 colonna.

Il numero totale di partizioni è 3.

Partizione 1:

C# si è verificato tre volte nella prima partizione. Quindi, i row_numbers sono 1, 2 e 3.

Partizione 2:

HTML si è verificato due volte nella seconda partizione. Quindi, i row_numbers sono 1 e 2.

Partizione 3:

I test si sono verificati cinque volte nella terza partizione. Quindi, i row_numbers sono 1, 2, 3, 4 e 5.

Conclusione

Abbiamo discusso di come partizionare le righe nel frame dati pyspark e ottenere i numeri di riga in ciascuna partizione usando la finestra row_number (). Row_number in pyspark è una funzione finestra che viene utilizzata per impostare i numeri a partire da 1 in ogni finestra partizionata. Assicurati di utilizzare questo comando durante l'utilizzo di questa funzione - da pyspark.SQL.Funzioni Importa Row_number.