Pyspark Zip, ZipwithIdex und ZipwithuniquiqueId

Pyspark Zip, ZipwithIdex und ZipwithuniquiqueId
In diesem Artikel werden wir Pysparks Zip (), ZipwithIdex () und zipwithuniqueId () -Methoden vorstellen und demonstrieren.

Bevor wir mit diesen Methoden beginnen, müssen wir RDD aus dem PySpark importieren.RDD -Modul. RDD steht für widerstandsfähige verteilte Datensätze. Wir können RDD als grundlegende Datenstruktur in Apache Spark bezeichnen. In PYSPARK, um eine RDD zu erstellen, können wir die parallelize () -Methode verwenden.

Syntax:

Spark_App.SparkContext.parallelisieren (Daten)

Wo: Daten können eindimensionale (lineare Daten) oder zweidimensionale Daten (Zeilensäuledaten) sein.

In diesem pyspark -Artikel werden wir ZIP (), zipwithIdex () & zipwithuniqueId () diskutieren.

Pyspark ZIP ()

PYSPARK ZIP () -Funktion wird verwendet, um Werte in beiden RDDs als Paare zu kombinieren, indem eine neue RDD zurückgegeben wird.

Syntax:

RDD -Daten1.ZIP (rdd_data2)

Hier:

  1. Rdd_data1 ist die erste rdd
  2. Rdd_data2 ist das zweite rdd

Notiz dass die Gesamtzahl der Elemente in den RDDs gleich sein muss. Andernfalls gibt es einen Fehler zurück.

Beispiel 1:

In diesem Beispiel werden wir RDD von Student_Marks1 und Student_Marks2 Numeric RDDs zurückgeben.

#Amportieren Sie das PYSPARK -Modul
pysspark importieren
#import SparkSession für die Erstellung einer Sitzung
aus pysspark.SQL Import SparkSession
# RDD aus PYSPARK importieren.RDD
aus pysspark.RDD Import RDD
#create eine App namens LinuxHint
Spark_app = SparkSession.Erbauer.AppName ('LinuxHint').Getorcreate ()
# Erstellen Sie Daten für Schülermarken mit 5 Elementen
Student_marks1 = Spark_App.SparkContext.parallelisieren ([89,76,78,89,90])
# Erstellen Sie Daten für Schülermarken mit 5 Elementen
Student_marks2 = Spark_App.SparkContext.parallelisieren ([1,2,3,4,5])
#Display -Daten in RDD
print ("tatsächliche Daten in student_marks1:", student_marks1.Karte (Lambda -Element: Element).sammeln())
print ("tatsächliche Daten in student_marks2:", student_marks2.Karte (Lambda -Element: Element).sammeln())
#zip die beiden RDDs mit ZIP ()
print (student_marks1.ZIP (Student_marks2).sammeln())

Ausgang:

Tatsächliche Daten in student_marks1: [89, 76, 78, 89, 90]
Tatsächliche Daten in student_marks2: ['1', 2, 3, 4, 5]
[(89, '1'), (76, 2), (78, 3), (89, 4), (90, 5)]

Wir können sehen, dass jeder Wert im ersten RDD mit der zweiten RDD kombiniert wird.

Beispiel 2:

In diesem Beispiel werden wir RDD von Student_Marks1 und Student_Marks2 String RDDs zurückgeben.

#Amportieren Sie das PYSPARK -Modul
pysspark importieren
#import SparkSession für die Erstellung einer Sitzung
aus pysspark.SQL Import SparkSession
# RDD aus PYSPARK importieren.RDD
aus pysspark.RDD Import RDD
#create eine App namens LinuxHint
Spark_app = SparkSession.Erbauer.AppName ('LinuxHint').Getorcreate ()
# Erstellen Sie Daten von Studentenfächern mit 2 Elementen
Subjekte1 = Spark_App.SparkContext.parallelisieren (['Python', 'Java'])
# Erstellen Sie Daten von Studentenfächern mit 2 Elementen
Probanden2 = Spark_App.SparkContext.parallelisieren (['html', 'java'])
#Display -Daten in RDD
print ("tatsächliche Daten in Themen1:", Subjekts1.Karte (Lambda -Element: Element).sammeln())
print ("tatsächliche Daten in Themen2:", Fächer2.Karte (Lambda -Element: Element).sammeln())
#zip die beiden RDDs mit ZIP ()
Druck (Themen1.ZIP (Subjekts2).sammeln())
Ausgang:
Tatsächliche Daten in Probanden1: ['Python', 'Java']
Tatsächliche Daten in Probanden2: ['HTML', 'Java']
[('Python', 'Html'), ('Java', 'Java')]]

Wir können sehen, dass die Werte von beiden RDDs geschliffen werden.

Pyspark zipwithIdex ()

PYSPARK ZipwithIdex () -Funktion wird verwendet, um Werte in einem einzelnen RDD mit Werten zu kombinieren. Hier beginnen die Werte standardmäßig mit 0.

Syntax:

Rdd_data.ZipwithIndex ()

Hier ist rdd_data die RDD

Beispiel 1:

In diesem Beispiel haben wir ein RDD mit 2 Stringelementen und ZIP mit Werten unter Verwendung von ZipwithIndex () erstellt.

#Amportieren Sie das PYSPARK -Modul
pysspark importieren
#import SparkSession für die Erstellung einer Sitzung
aus pysspark.SQL Import SparkSession
# RDD aus PYSPARK importieren.RDD
aus pysspark.RDD Import RDD
#create eine App namens LinuxHint
Spark_app = SparkSession.Erbauer.AppName ('LinuxHint').Getorcreate ()
# Erstellen Sie Daten von Studentenfächern mit 2 Elementen
Subjekts1 = Spark_App.SparkContext.parallelisieren (['Python', 'Java'])
#Display -Daten in RDD
print ("tatsächliche Daten in Themen1:", Subjekts1.Karte (Lambda -Element: Element).sammeln())
#zip die beiden RDDs mit ZipwithIndex ())
Druck (Themen1.ZipwithIndex ().sammeln())

Ausgang:

Tatsächliche Daten in Probanden1: ['Python', 'Java']
[('Python', 0), ('Java', 1)]

Wir können sehen, dass der Wert Python mit Wert 0 gerissen wird und Java mit Wert 1 geendelt ist.

Beispiel 2:

In diesem Beispiel haben wir ein RDD mit 6 Stringelementen und ZIP mit Werten unter Verwendung von ZipwithIndex () erstellt.

#Amportieren Sie das PYSPARK -Modul
pysspark importieren
#import SparkSession für die Erstellung einer Sitzung
aus pysspark.SQL Import SparkSession
# RDD aus PYSPARK importieren.RDD
aus pysspark.RDD Import RDD
#create eine App namens LinuxHint
Spark_app = SparkSession.Erbauer.AppName ('LinuxHint').Getorcreate ()
# Erstellen Sie Daten von Studentenfächern mit 6 Elementen
Subjekte1 = Spark_App.SparkContext.Parallelize (['Python', 'Java', 'Python', 'Java', 'Python', 'Java'])
#Display -Daten in RDD
print ("tatsächliche Daten in Themen1:", Subjekts1.Karte (Lambda -Element: Element).sammeln())
#zip die beiden RDDs mit ZipwithIndex ())
Druck (Themen1.ZipwithIndex ().sammeln())

Ausgang:

Tatsächliche Daten in Probanden1: ['Python', 'Java', 'Python', 'Java', 'Python', 'Java']
[('Python', 0), ('Java', 1), ('Python', 2), ('Java', 3), ('Python', 4), ('Java', 5)]

Pyspark zipwithuniqueId ()

Die Funktion pyspark zipwithuniqueId () ähnelt der obigen Methode, aber die Werte, die ein Paar bilden, befinden sich im folgenden Muster:

k, 1*n+k, 2*n+k, 3*n+k… .

n repräsentiert die Anzahl der Partitionen.

Syntax:

Rdd_data.zipWithuniquiDId ()

Hier ist rdd_data die RDD

Es kann viele Lücken zwischen den Werten geben, die geschliffen sind.

Beispiel:

#Amportieren Sie das PYSPARK -Modul
pysspark importieren
#import SparkSession für die Erstellung einer Sitzung
aus pysspark.SQL Import SparkSession
# RDD aus PYSPARK importieren.RDD
aus pysspark.RDD Import RDD
#create eine App namens LinuxHint
Spark_app = SparkSession.Erbauer.AppName ('LinuxHint').Getorcreate ()
# Erstellen Sie Daten von Studentenfächern mit 6 Elementen
Subjekte1 = Spark_App.SparkContext.Parallelize (['Python', 'Java', 'Python', 'Java', 'Python', 'Java'])
#Display -Daten in RDD
print ("tatsächliche Daten in Themen1:", Subjekts1.Karte (Lambda -Element: Element).sammeln())
#zip die beiden RDDs mit ZipWithuniquiqueId ()
Druck (Themen1.zipWithuniquiDId ().sammeln())

Ausgang:

Tatsächliche Daten in Probanden1: ['Python', 'Java', 'Python', 'Java', 'Python', 'Java']
[('Python', 0), ('Java', 2), ('Python', 4), ('Java', 1), ('Python', 3), ('Java', 5)]

Aus der obigen Ausgabe können wir sehen, dass unterschiedliche Werte mit tatsächlichen Werten geschliffen werden.

Abschluss

In diesem Tutorial haben wir gesehen. ZIP () wird verwendet, um zwei RDD -Paare zu zipieren. ZipwithIdex () wird verwendet, um mit Werten zu zip und zipwithuniquiD () zu sortieren.