PYSPARK - Bleifunktion

PYSPARK - Bleifunktion
Die Funktion von Lead () in PySpark ist im Fenstermodul verfügbar, mit dem die nächsten Zeilenwerte an die aktuellen Zeilen zurückgegeben werden. Erstens gibt die Funktion Lead () die Null für die letzte Reihe in einer Partition zurück. Es ist ein Offset -Parameter, der die Gesamtzahl der Zeilen darstellt, so dass die nächsten Zeilenwerte an die tatsächlichen Zeilen zurückgegeben werden. Die Nulls werden für die erste letzte Reihe platziert (Offset).

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

Syntax:

DataFrame_OBJ.WithColumn ("Lead_Column", Lead ("Spalte", Offset).über (Partition))

Es dauert zwei Parameter:

  1. Der Lead_Column ist der Spaltenname im PYSPARK -Datenrahmen, in dem die führenden Zeilenwerte basierend auf den Werten in dieser Spalte platziert werden.
  2. Der Offset gibt die Ganzzahl an, die diese Anzahl der nächsten Zeilen an die aktuellen Zeilenwerte zurückgibt.

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.

Jetzt können Sie die fead () -Funktion auf den partitionierten Zeilen verwenden, indem Sie die über() Funktion.

Wir fügen eine Spalte hinzu, um die Zeilennummer mit dem zu speichern with column () Funktion.

Syntax:

DataFrame_OBJ.WithColumn ("Lead_Column", Lead ("Spalte", Offset).ü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 der Fensterfunktion. Danach führen wir eine Reihe an.

pysspark importieren
aus pysspark.SQL Import *
Spark_app = SparkSession.Erbauer.App Name('_').Getorcreate ()
Schüler = [(4, 'Sravan', 23, 'Php', 'Testing'),
(4, 'Sravan', 23, 'php', 'testing'),
(46, 'Mounika', 22, ','.Net ',' html '),
(4, "Deepika", 21, "Oracle", "Html"),
(46, 'Mounika', 22, 'Oracle', 'Testing'),
(12, 'Chandrika', 22, 'Hadoop', 'C#'),
(12, "Chandrika", 22, "Oracle", "Testing"),
(4, '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
#Port der Führung von PYSPARK.sql.Funktionen
aus pysspark.sql.Funktionen importieren leitend
#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 Sie Lead mit Offset-1 basierend auf Subjekt_ID
DataFrame_OBJ.WithColumn ("Lead", Lead ("Subjekt_ID", 1).ü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. Da wir das Lead-Offset als 1 angegeben haben .Nettowert ist null und der erste .Nettowert ist nächstes Zeilenbetriebener Wert - 46.

Partition 2:

Hadoop ereignete sich einmal in der zweiten Partition. Blei ist also Null.

Partition 3:

Oracle trat viermal in der Dritten Partition auf.

  1. Für das letzte Orakel ist Lead null.
  2. Für das erste Orakel beträgt der Leadwert 4 (da der Wert der nächsten Zeile 4 ist 4).
  3. Für das dritte Orakel beträgt der Leadwert 12 (da der Wert der nächsten Zeile beträgt.

Für das vierte Orakel beträgt der Leadwert 46 (da der Wert der nächsten Zeile beträgt.

Partition 4:

PHP trat dreimal in der vierten Partition auf.

  1. Der Leitwert für den 3. PHP ist null.
  2. Der Leadwert für den 1. PHP beträgt 4 (da der Wert der nächsten Zeile 4 beträgt 4).
  3. Der Leadwert für den 2. PHP beträgt 4 (da der Wert der nächsten Zeile 4 ist 4).

Beispiel 2:

Führe die Zeilen um 2. Stellen Sie sicher, dass Sie den PYSPark -Datenfreame erstellt haben, wie in Beispiel 1 zu sehen.

# Importieren Sie die Fensterfunktion
aus pysspark.sql.Fensterimportfenster
#Port der Führung von PYSPARK.sql.Funktionen
aus pysspark.sql.Funktionen importieren leitend
#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 Sie Lead mit Offset-2 basierend auf Subjekt_ID
DataFrame_OBJ.WithColumn ("Lead", Lead ("Subjekt_ID", 2).über (Partition)).zeigen()

Ausgang:

Erläuterung:

Die Partition basiert auf dem Technologie1 Spalte.

Die Gesamtzahl der Partitionen beträgt 4.

Partition 1:

Der .Das Netz trat zweimal in der ersten Partition auf. Da wir das Lead-Offset als 2 angegeben haben, ist der Offset für beide Werte null.

Partition 2:

Hadoop ereignete sich einmal in der zweiten Partition. Blei ist also Null.

Partition 3:

Oracle trat viermal in der Dritten Partition auf.

  • In den letzten beiden Orakel ist die Führung null.
  • Für das erste Oracle beträgt der Leadwert 12 (da der Wert der nächsten 2 Zeilen der Subjekt_ID 12 ist).
  • Für das zweite Orakel beträgt der Leadwert 46 (da der Wert der nächsten 2 Zeilen der Subjekt_ID 46 beträgt).

Partition 4:

PHP trat dreimal in der vierten Partition auf.

  • In den letzten beiden Orakel ist die Führung null.
  • Für den ersten PHP beträgt der Leadwert 4 (da der Wert der nächsten 2 Zeilen der Subjekt_ID 4 beträgt).

Beispiel 3:

Führen Sie die Zeilen basierend auf der Altersspalte um 2. Stellen Sie sicher, dass Sie den PYSPark -Datenfreame erstellt haben, wie in Beispiel 1 zu sehen.

# Importieren Sie die Fensterfunktion
aus pysspark.sql.Fensterimportfenster
#Port der Führung von PYSPARK.sql.Funktionen
aus pysspark.sql.Funktionen importieren leitend
#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 Sie Lead mit Offset-2 basierend auf dem Alter
DataFrame_OBJ.With Column ("Lead", Lead ("Alter", 2).über (Partition)).zeigen()

Ausgang:

Erläuterung:

Die Partition basiert auf dem Technologie1 Die Spalte und die Leitung werden basierend auf der Altersspalte definiert.

Die Gesamtzahl der Partitionen beträgt 4.

Partition 1:

Der .Das Netz trat zweimal in der ersten Partition auf. Da wir das Lead-Offset als 2 angegeben haben, ist der Offset für beide Werte null.

Partition 2:

Hadoop ereignete sich einmal in der zweiten Partition. Die Führung ist also Null.

Partition 3:

Oracle trat viermal in der Dritten Partition auf.

  • Für die letzten beiden Orakel ist die Führung null.
  • Für das erste Orakel beträgt der Leadwert 22 (da die nächsten 2 Reihen Alterswert 22 beträgt).
  • Für das zweite Orakel beträgt der Leadwert 22 (da die nächsten 2 Reihen Alterswert 22 beträgt).

Partition 4:

PHP trat dreimal in der vierten Partition auf.

  • Für die letzten beiden Orakel ist die Führung null.
  • Für den ersten PHP beträgt der Leadwert 21 (da die nächsten 2 Reihen Alterswert 21 sind).

Abschluss

Wir haben gelernt, wie man in den partitionierten Zeilen die Lead -Werte in PYSPARK -Datenframe erhält. Die Funktion von Lead () in PySpark ist im Fenstermodul verfügbar, mit dem die nächsten Zeilenwerte an die aktuellen Zeilen zurückgegeben werden. Es ist ein Offset -Parameter, der die Gesamtzahl der Zeilen darstellt, so dass die nächsten Zeilenwerte an die tatsächlichen Zeilen zurückgegeben werden. Für die erste letzte Reihe werden die (Offset) Nulls platziert. Wir haben die verschiedenen Beispiele gelernt, indem wir die verschiedenen Offsets festgelegt haben.