Pyspark Zip, ZipWithIndex og ZipwithUniqueId

Pyspark Zip, ZipWithIndex og ZipwithUniqueId
I denne artikkelen vil vi introdusere og demonstrere Pysparks Zip (), ZipWithIndex () og ZipWithUniqueID () -metoder.

Før vi kommer i gang med disse metodene, må vi importere RDD fra Pyspark.RDD -modul. RDD står for spenstige distribuerte datasett. Vi kan kalle RDD som en grunnleggende datastruktur i Apache Spark. Så i Pyspark for å lage en RDD, kan vi bruke parallelliseringsmetoden () metoden.

Syntaks:

Spark_app.SparkContext.parallellisere (data)

Hvor: Data kan være en endimensjonal (lineære data) eller todimensjonale data (rad-kolonne data).

I denne Pyspark -artikkelen vil vi diskutere ZIP (), ZipWithIndex () & ZipWithUniqueId ().

Pyspark Zip ()

Pyspark Zip () -funksjon brukes til å kombinere verdier i begge RDD -ene som par ved å returnere en ny RDD.

Syntaks:

RDD Data1.ZIP (RDD_DATA2)

Her:

  1. RDD_DATA1 er den første RDD
  2. RDD_DATA2 er den andre RDD

Merk at det totale antallet elementer i RDD -ene må være det samme. Ellers vil det returnere en feil.

Eksempel 1:

I dette eksemplet vil vi returnere Zipped RDD fra Student_marks1 og Student_marks2 Numeric RDDS.

#import Pyspark -modulen
Importer pyspark
#import SparkSession for å lage en økt
Fra Pyspark.SQL Import SparkSession
# Importer RDD fra Pyspark.RDD
Fra Pyspark.RDD Import RDD
#Create en app som heter Linuxhint
Spark_app = SparkSession.bygger.AppName ('Linuxhint').getorCreate ()
# Lag studentmerker data med 5 elementer
Student_marks1 = spark_app.SparkContext.parallelliser ([89,76,78,89,90]))
# Lag studentmerker data med 5 elementer
Student_marks2 = spark_app.SparkContext.parallellisere ([1,2,3,4,5])
#display -data i RDD
Print ("Faktiske data i Student_marks1:", Student_marks1.Kart (Lambda Element: Element).samle inn())
Print ("Faktiske data i Student_marks2:", Student_marks2.Kart (Lambda Element: Element).samle inn())
#zip de to RDD -ene som bruker ZIP ()
Print (Student_marks1.ZIP (Student_marks2).samle inn())

Produksjon:

Faktiske data i Student_marks1: [89, 76, 78, 89, 90]
Faktiske data i Student_marks2: ['1', 2, 3, 4, 5]
[(89, '1'), (76, 2), (78, 3), (89, 4), (90, 5)]

Vi kan se at hver verdi i den første RDD er kombinert med den andre RDD.

Eksempel 2:

I dette eksemplet vil vi returnere Zipped RDD fra Student_marks1 og Student_marks2 String RDDS.

#import Pyspark -modulen
Importer pyspark
#import SparkSession for å lage en økt
Fra Pyspark.SQL Import SparkSession
# Importer RDD fra Pyspark.RDD
Fra Pyspark.RDD Import RDD
#Create en app som heter Linuxhint
Spark_app = SparkSession.bygger.AppName ('Linuxhint').getorCreate ()
# Lag studentfag data med 2 elementer
emner1 = spark_app.SparkContext.Parallellize (['Python', 'Java'])
# Lag studentfag data med 2 elementer
emner2 = spark_app.SparkContext.parallellisere (['html', 'java'])
#display -data i RDD
print ("Faktiske data i emner1:", emner1.Kart (Lambda Element: Element).samle inn())
print ("Faktiske data i emner2:", emner2.Kart (Lambda Element: Element).samle inn())
#zip de to RDD -ene som bruker ZIP ()
trykk (emner1.ZIP (emner2).samle inn())
Produksjon:
Faktiske data i emner1: ['Python', 'Java']
Faktiske data i emner2: ['html', 'java']
[('Python', 'Html'), ('Java', 'Java')]

Vi kan se at verdier fra begge RDD -ene er glidelås.

Pyspark ZipWithIndex ()

Pyspark ZipWithIndex () -funksjon brukes til å kombinere verdier i en enkelt RDD med verdier. Her starter verdier som standard med 0.

Syntaks:

RDD_DATA.ZipWithIndex ()

Her er RDD_DATA RDD

Eksempel 1:

I dette eksemplet opprettet vi en RDD med 2 strengelementer og zip med verdier ved bruk av ZipWithIndex ().

#import Pyspark -modulen
Importer pyspark
#import SparkSession for å lage en økt
Fra Pyspark.SQL Import SparkSession
# Importer RDD fra Pyspark.RDD
Fra Pyspark.RDD Import RDD
#Create en app som heter Linuxhint
Spark_app = SparkSession.bygger.AppName ('Linuxhint').getorCreate ()
# Lag studentfag data med 2 elementer
emner1 = spark_app.SparkContext.Parallellize (['Python', 'Java'])
#display -data i RDD
print ("Faktiske data i emner1:", emner1.Kart (Lambda Element: Element).samle inn())
#Zip de to RDD -ene som bruker ZipWithIndex ()
trykk (emner1.ZipWithIndex ().samle inn())

Produksjon:

Faktiske data i emner1: ['Python', 'Java']
[('Python', 0), ('Java', 1)]

Vi kan se at verdien Python er dratt med verdi 0 og Java er glidelås med verdi 1.

Eksempel 2:

I dette eksemplet opprettet vi en RDD med 6 strengelementer og zip med verdier ved bruk av ZipWithIndex ().

#import Pyspark -modulen
Importer pyspark
#import SparkSession for å lage en økt
Fra Pyspark.SQL Import SparkSession
# Importer RDD fra Pyspark.RDD
Fra Pyspark.RDD Import RDD
#Create en app som heter Linuxhint
Spark_app = SparkSession.bygger.AppName ('Linuxhint').getorCreate ()
# Lag studentfag data med 6 elementer
emner1 = spark_app.SparkContext.Parallellize (['Python', 'Java', 'Python', 'Java', 'Python', 'Java'])
#display -data i RDD
print ("Faktiske data i emner1:", emner1.Kart (Lambda Element: Element).samle inn())
#Zip de to RDD -ene som bruker ZipWithIndex ()
trykk (emner1.ZipWithIndex ().samle inn())

Produksjon:

Faktiske data i emner1: ['Python', 'Java', 'Python', 'Java', 'Python', 'Java']
[('Python', 0), ('Java', 1), ('Python', 2), ('Java', 3), ('Python', 4), ('Java', 5)]

Pyspark ZipWithUniqueId ()

Pyspark ZipWithUniqueID () -funksjonen ligner på metoden ovenfor, men verdiene som danner et par er i følgende mønster:

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

n representerer antall partisjoner.

Syntaks:

RDD_DATA.ZipWithUniqueId ()

Her er RDD_DATA RDD

Det kan være mange hull mellom verdiene glidelås.

Eksempel:

#import Pyspark -modulen
Importer pyspark
#import SparkSession for å lage en økt
Fra Pyspark.SQL Import SparkSession
# Importer RDD fra Pyspark.RDD
Fra Pyspark.RDD Import RDD
#Create en app som heter Linuxhint
Spark_app = SparkSession.bygger.AppName ('Linuxhint').getorCreate ()
# Lag studentfag data med 6 elementer
emner1 = spark_app.SparkContext.Parallellize (['Python', 'Java', 'Python', 'Java', 'Python', 'Java'])
#display -data i RDD
print ("Faktiske data i emner1:", emner1.Kart (Lambda Element: Element).samle inn())
#Zip de to RDD -ene som bruker ZipWithUniqueID ()
trykk (emner1.ZipWithUniqueId ().samle inn())

Produksjon:

Faktiske data i emner1: ['Python', 'Java', 'Python', 'Java', 'Python', 'Java']
[('Python', 0), ('Java', 2), ('Python', 4), ('Java', 1), ('Python', 3), ('Java', 5)]

Fra output ovenfor kan vi se at forskjellige verdier er glidelås med faktiske verdier.

Konklusjon

I denne opplæringen så vi hvordan man glipper RDD med noen verdier. Zip () brukes til å gli to RDDs par. ZipWithIndex () brukes til å zip med verdier og ZipWithUniqueId () brukes til å gli med verdier basert på partisjoner.