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:
- Rdd_data1 ist die erste rdd
- 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.