Pyspark Zip, ZipWithIndex e ZipWithUniqueid

Pyspark Zip, ZipWithIndex e ZipWithUniqueid
In questo articolo introdurremo e dimostreremo i metodi PysPark's Zip (), ZipWithIndex () e ZipWithUniqueid ().

Prima di iniziare con questi metodi, dobbiamo importare RDD dal Pyspark.Modulo RDD. RDD sta per set di dati distribuiti resilienti. Possiamo chiamare RDD come struttura di dati fondamentali in Apache Spark. Quindi, in Pyspark per creare un RDD, possiamo usare il metodo parallelize ().

Sintassi:

Spark_app.SparkContext.parallelizza (dati)

Dove: i dati possono essere un dati monodimensionali (dati lineari) o bidimensionali (dati di riga-colonna).

In questo articolo di Pyspark, discuteremo di zip (), zipWithIndex () e zipWithUniqueid ().

Pyspark zip ()

La funzione pyspark zip () viene utilizzata per combinare i valori in entrambe le coppie di RDD restituendo un nuovo RDD.

Sintassi:

RDD Data1.Zip (RDD_DATA2)

Qui:

  1. Rdd_data1 è il primo RDD
  2. RDD_DATA2 è il secondo RDD

Nota che il numero totale di elementi negli RDD deve essere lo stesso. Altrimenti, restituirà un errore.

Esempio 1:

In questo esempio, restituiremo zipped RDD da Student_Marks1 e Student_Marks2 Numeric RDDS.

#import il modulo pyspark
importare pyspark
#IMPORT SPARKSESSION per la creazione di una sessione
da pyspark.SQL Importazione di importazione
# Importa RDD da Pyspark.rdd
da pyspark.RDD Import RDD
#Crea un'app chiamata LinuxHint
Spark_app = SparkSession.costruttore.appname ('LinuxHint').getOrCreate ()
# Crea dati degli studenti con 5 elementi
Student_Marks1 = Spark_app.SparkContext.parallelize ([89,76,78,89,90])
# Crea dati degli studenti con 5 elementi
Student_Marks2 = Spark_app.SparkContext.parallelize ([1,2,3,4,5])
#Display Data in RDD
Stampa ("Dati effettivi in ​​Student_Marks1:", Student_Marks1.Mappa (Lambda Element: Element).raccogliere())
Stampa ("Dati effettivi in ​​Student_Marks2:", Student_Marks2.Mappa (Lambda Element: Element).raccogliere())
#Zip i due RDD usano zip ()
Stampa (Student_Marks1.Zip (Student_Marks2).raccogliere())

Produzione:

Dati effettivi in ​​Student_Marks1: [89, 76, 78, 89, 90]
Dati effettivi in ​​Student_Marks2: ['1', 2, 3, 4, 5]
[(89, '1'), (76, 2), (78, 3), (89, 4), (90, 5)]

Possiamo vedere che ogni valore nel primo RDD è combinato con il secondo RDD.

Esempio 2:

In questo esempio, restituiremo zipped RDD da Student_Marks1 e Student_Marks2 String RDDS.

#import il modulo pyspark
importare pyspark
#IMPORT SPARKSESSION per la creazione di una sessione
da pyspark.SQL Importazione di importazione
# Importa RDD da Pyspark.rdd
da pyspark.RDD Import RDD
#Crea un'app chiamata LinuxHint
Spark_app = SparkSession.costruttore.appname ('LinuxHint').getOrCreate ()
# Crea dati su soggetti studenteschi con 2 elementi
Soggetti1 = Spark_app.SparkContext.parallelize (['python', 'java'])
# Crea dati su soggetti studenteschi con 2 elementi
Soggetti2 = Spark_app.SparkContext.parallelize (['html', 'java'])
#Display Data in RDD
Stampa ("Dati effettivi in ​​soggetti1:", Soggetti1.Mappa (Lambda Element: Element).raccogliere())
Stampa ("Dati effettivi in ​​soggetti2:", soggetti2.Mappa (Lambda Element: Element).raccogliere())
#Zip i due RDD usano zip ()
Stampa (Soggetti1.zip (soggetti2).raccogliere())
Produzione:
Dati effettivi in ​​soggetti1: ['python', 'java']
Dati effettivi in ​​soggetti2: ['html', 'java']
[('Python', 'html'), ('java', 'java')]

Possiamo vedere che i valori di entrambi i RDD sono zippato.

Pyspark zipWithIndex ()

La funzione pyspark zipwithindex () viene utilizzata per combinare i valori in un singolo RDD con valori. Qui, i valori per impostazione predefinita iniziano con 0.

Sintassi:

Rdd_data.zipWithIndex ()

Qui, RDD_DATA è il RDD

Esempio 1:

In questo esempio, abbiamo creato un RDD con 2 elementi di stringa e zip con valori usando zipWithIndex ().

#import il modulo pyspark
importare pyspark
#IMPORT SPARKSESSION per la creazione di una sessione
da pyspark.SQL Importazione di importazione
# Importa RDD da Pyspark.rdd
da pyspark.RDD Import RDD
#Crea un'app chiamata LinuxHint
Spark_app = SparkSession.costruttore.appname ('LinuxHint').getOrCreate ()
# Crea dati su soggetti studenteschi con 2 elementi
Soggetti1 = Spark_app.SparkContext.parallelize (['python', 'java'])
#Display Data in RDD
Stampa ("Dati effettivi in ​​soggetti1:", Soggetti1.Mappa (Lambda Element: Element).raccogliere())
#Zip i due RDD utilizzano zipWithIndex ()
Stampa (Soggetti1.zipWithIndex ().raccogliere())

Produzione:

Dati effettivi in ​​soggetti1: ['python', 'java']
[('Python', 0), ('Java', 1)]

Possiamo vedere che il valore Python è strappato con il valore 0 e Java è zippato con il valore 1.

Esempio 2:

In questo esempio, abbiamo creato un RDD con 6 elementi di stringa e zip con valori usando zipWithIndex ().

#import il modulo pyspark
importare pyspark
#IMPORT SPARKSESSION per la creazione di una sessione
da pyspark.SQL Importazione di importazione
# Importa RDD da Pyspark.rdd
da pyspark.RDD Import RDD
#Crea un'app chiamata LinuxHint
Spark_app = SparkSession.costruttore.appname ('LinuxHint').getOrCreate ()
# Crea dati sugli argomenti degli studenti con 6 elementi
Soggetti1 = Spark_app.SparkContext.parallelize (['python', 'java', 'python', 'java', 'python', 'java'])
#Display Data in RDD
Stampa ("Dati effettivi in ​​soggetti1:", Soggetti1.Mappa (Lambda Element: Element).raccogliere())
#Zip i due RDD utilizzano zipWithIndex ()
Stampa (Soggetti1.zipWithIndex ().raccogliere())

Produzione:

Dati effettivi in ​​soggetti1: ["Python", "Java", "Python", "Java", "Python", "Java"]
[('Python', 0), ('Java', 1), ('Python', 2), ('Java', 3), ('Python', 4), ('Java', 5)]

Pyspark ZipWithUniqueid ()

La funzione pyspark

K, 1*N+K, 2*N+K, 3*N+K .. .

n rappresenta il numero di partizioni.

Sintassi:

Rdd_data.zipWithUniqueid ()

Qui, RDD_DATA è il RDD

Ci possono essere molte lacune tra i valori Zipped.

Esempio:

#import il modulo pyspark
importare pyspark
#IMPORT SPARKSESSION per la creazione di una sessione
da pyspark.SQL Importazione di importazione
# Importa RDD da Pyspark.rdd
da pyspark.RDD Import RDD
#Crea un'app chiamata LinuxHint
Spark_app = SparkSession.costruttore.appname ('LinuxHint').getOrCreate ()
# Crea dati sugli argomenti degli studenti con 6 elementi
Soggetti1 = Spark_app.SparkContext.parallelize (['python', 'java', 'python', 'java', 'python', 'java'])
#Display Data in RDD
Stampa ("Dati effettivi in ​​soggetti1:", Soggetti1.Mappa (Lambda Element: Element).raccogliere())
#Zip i due RDD che usano zipWithUniqueid ()
Stampa (Soggetti1.zipWithUniqueid ().raccogliere())

Produzione:

Dati effettivi in ​​soggetti1: ["Python", "Java", "Python", "Java", "Python", "Java"]
[('Python', 0), ('Java', 2), ('Python', 4), ('Java', 1), ('Python', 3), ('Java', 5)]

Dall'output di cui sopra, possiamo vedere che valori diversi sono zip con valori effettivi.

Conclusione

In questo tutorial, abbiamo visto come sfrecciare la RDD con alcuni valori. zip () viene utilizzato per zip due coppie di RDD. zipWithIndex() is used to zip with values ​​& zipWithUniqueId() is used to zip with values ​​based on partitions.