Pyspark - row_number -Funktion

Pyspark - row_number -Funktion
Es ist möglich, die Zeilen im DataFrame mithilfe der Fensterfunktion in PYSPark zu partitionieren,. Es ist in der erhältlich PYSPARK.sql.Fenster Modul.

Der Vorteil der Partition besteht darin, die Datenkonsistenz und Gruppierung zu erreichen. Nachdem wir die Partition durchgeführt haben Zeilennummer() Funktion.

Es ist möglich, die Zeilen in einem Datenrahmen auf der Grundlage der Werte in einer bestimmten Spalte zu partitionieren. Alle ähnlichen Werte werden auf jede Partition festgelegt. Angenommen, es gibt 3 Arten ähnlicher Werte, dann ist jeder Typ eine Partition. Es wird also drei Partitionen geben.

Row_Number () Fensterfunktion

Der row_number in pyspark ist eine Fensterfunktion, mit der die Zahlen von 1 in jedem partitionierten Fenster abgelegt werden können.

Die Hauptsache ist, dass die row_number () nicht direkt verfügbar ist. Wir müssen es aus dem importieren PYSPARK.sql.Funktionen Modul.

Syntax zum Importmodul:

aus pysspark.sql.Funktionen importieren row_number

Andernfalls können wir dies auch mögen, um alle Methoden aus diesem Modul zu importieren.

aus pysspark.sql.Funktionen importieren *

Wir müssen die folgenden Schritte ausführen, um die Partition auszuführen und die row_number auf die partitionierten Daten anzuwenden.

Schritte:

  1. Erstellen Sie einen PYSPARK -Datenrahmen, der in mindestens einer Spalte einige ähnliche Werte aufweist.
  2. Partitionieren Sie die Daten mit der in der Fensterfunktion verfügbaren PartitionBy () -Methode und bestellen Sie sie basierend auf der Spalte mit der Funktion "OrderBy ()).

Syntax:

Partition = Fenster.partitionby ("Spalte").OrderBy ("Spalte")

Wir können die partitionierten Daten mit der partitionierten Spalte oder einer anderen Spalte bestellen.

  1. Jetzt können Sie die Funktion row_number () auf den partitionierten Zeilen verwenden über() Funktion. Daher fügen wir eine Spalte hinzu, um die Zeilennummer mit dem zu speichern with column () Funktion.

Syntax:

DataFrame_OBJ.WithColumn ("Name", row_number ().über (Partition))

Hier gibt der Name den Zeilennamen an und der DataFrame_OBJ ist unser PYSPARK -Datenrahmen.

Lassen Sie uns den Code implementieren.

Beispiel 1:

Hier erstellen wir einen PYSPARK -Datenrahmen mit 5 Spalten - ['Subjekt_ID', 'Name', 'Age', 'Technology1', 'Technology2'] mit 10 Zeilen und Partition der Zeilen basierend auf dem Technologie1 Verwenden Sie die Fensterfunktion, nachdem Sie die Zeilennummern für Partitionen erhalten haben, und fügen Sie diese in die Spalte hinzu - Reihe für Technologie1.

pysspark importieren
aus pysspark.SQL Import *
Spark_app = SparkSession.Erbauer.App Name('_').Getorcreate ()
Schüler = [(4, 'Sravan', 23, 'Php', 'Testing'),
(2, 'Sravan', 23, "Oracle", "Testing"),
(46, 'Mounika', 22, ','.Net ',' html '),
(12, "Deepika", 21, "Oracle", "Html"),
(46, 'Mounika', 22, 'Oracle', 'Testing'),
(12, 'Chandrika', 23, 'Hadoop', 'C#'),
(12, "Chandrika", 22, "Oracle", "Testing"),
(45, 'Sravan', 23, "Oracle", "C#"),
(4, 'Deepika', 21, 'Php', 'C#'),
(46, 'Mounika', 22, ','.Net ',' testing ')
]
DataFrame_OBJ = Spark_App.Createdataframe (Studenten, ['Subjekt_ID', 'Name', 'Alter', 'Technology1', 'Technology2'])
print ("---------- tatsächliche Datenfreque ----------")
DataFrame_OBJ.zeigen()
# Importieren Sie die Fensterfunktion
aus pysspark.sql.Fensterimportfenster
#importieren Sie die row_number von pyspark.sql.Funktionen
aus pysspark.sql.Funktionen importieren row_number
#Partition den Datenrahmen basierend auf den Werten in der Spalte Technologie1 und
#Bestand die Zeilen in jeder Partition basierend auf der Spalte Subjekt_ID
Partition = Fenster.partitionby ("Technology1").OrderBy ('Subjekt_ID')
print ("---------- partitionierte Datenframe ----------")
#Now erwähnen die Zeilennummer für jede Zeile in der Zeilespalte
DataFrame_OBJ.WithColumn ("Row for Technology1", row_number ().über (Partition)).zeigen()

Ausgang:

Erläuterung:

Die erste Ausgabe repräsentiert die tatsächlichen Daten im Datenrahmen. In der zweiten Ausgabe erfolgt die Partition basierend auf dem Technologie1 Spalte.

Die Gesamtzahl der Partitionen beträgt 4.

Partition 1:

Der .Das Netz trat zweimal in der ersten Partition auf. Die Row_numbers sind also 1 und 2.

Partition 2:

Hadoop ereignete sich einmal in der zweiten Partition. Die Row_Number ist also 1.

Partition 3:

Oracle trat fünfmal in der Dritten Partition auf. Die Row_numbers sind also 1, 2, 3, 4 und 5.

Partition 4:

PHP trat zweimal in der fünften Partition auf. Die Row_numbers sind also 1 und 2.

Beispiel 2:

Für denselben Datenrahmen partieren wir die Zeilen basierend auf Technologie2 Verwenden Sie die Fensterfunktion, nachdem Sie die Zeilennummern für Partitionen erhalten haben, und fügen Sie diese in die Spalte hinzu - Reihe für Technologie2.

pysspark importieren
aus pysspark.SQL Import *
Spark_app = SparkSession.Erbauer.App Name('_').Getorcreate ()
Schüler = [(4, 'Sravan', 23, 'Php', 'Testing'),
(2, 'Sravan', 23, "Oracle", "Testing"),
(46, 'Mounika', 22, ','.Net ',' html '),
(12, "Deepika", 21, "Oracle", "Html"),
(46, 'Mounika', 22, 'Oracle', 'Testing'),
(12, 'Chandrika', 23, 'Hadoop', 'C#'),
(12, "Chandrika", 22, "Oracle", "Testing"),
(45, 'Sravan', 23, "Oracle", "C#"),
(4, 'Deepika', 21, 'Php', 'C#'),
(46, 'Mounika', 22, ','.Net ',' testing ')
]
DataFrame_OBJ = Spark_App.Createdataframe (Studenten, ['Subjekt_ID', 'Name', 'Alter', 'Technology1', 'Technology2'])
print ("---------- tatsächliche Datenfreque ----------")
DataFrame_OBJ.zeigen()
# Importieren Sie die Fensterfunktion
aus pysspark.sql.Fensterimportfenster
#importieren Sie die row_number von pyspark.sql.Funktionen
aus pysspark.sql.Funktionen importieren row_number
#Partition den Datenrahmen basierend auf den Werten in der Spalte Technology2 und
#Bestand die Zeilen in jeder Partition basierend auf der Spalte Subjekt_ID
Partition = Fenster.partitionby ("Technology2").OrderBy ('Subjekt_ID')
print ("---------- partitionierte Datenframe ----------")
#Now erwähnen die Zeilennummer für jede Zeile in der Zeilespalte
DataFrame_OBJ.WithColumn ("Row for Technology2", row_number ().über (Partition)).zeigen()

Ausgang:

Erläuterung:

Die erste Ausgabe repräsentiert die tatsächlichen Daten im Datenrahmen. In der zweiten Ausgabe erfolgt die Partition basierend auf dem Technologie2 Spalte.

Die Gesamtzahl der Partitionen beträgt 3.

Partition 1:

C# trat dreimal in der ersten Partition auf. Die Row_numbers sind also 1, 2 und 3.

Partition 2:

HTML trat zweimal in der zweiten Partition auf. Die Row_numbers sind also 1 und 2.

Partition 3:

Tests traten fünfmal in der Dritten Partition auf. Die Row_numbers sind also 1, 2, 3, 4 und 5.

Abschluss

Wir haben besprochen, wie die Zeilen im PYSPARK -Datenrahmen unterteilt werden und die Zeilennummern in jeder Partition mit der Fensterfunktion row_number () abgerufen werden können. Der row_number in pyspark ist eine Fensterfunktion, mit der die Zahlen von 1 in jedem partitionierten Fenster abgelegt werden können. Verwenden Sie diesen Befehl, während Sie diese Funktion verwenden - aus pysspark.sql.Funktionen importieren row_number.