Pyspark - blyfunksjon

Pyspark - blyfunksjon
Lead () -funksjonen i Pyspark er tilgjengelig i vindusmodulen som brukes til å returnere de neste radverdiene til de gjeldende radene. Først returnerer LEAD () -funksjonen null for den siste raden/s i en partisjon. Det tar en forskyvningsparameter som representerer det totale antall rader slik at de neste radverdiene returneres til de faktiske radene. Nullene er plassert for første siste rad/s (forskyvning).

Det er mulig å dele opp radene i DataFrame ved å bruke vindusfunksjonen. Det er tilgjengelig i Pyspark.SQL.vindu modul.

Syntaks:

DataFrame_obj.WithColumn ("Lead_Column", Lead ("Column", Offset).over (partisjon))

Det tar to parametere:

  1. Lead_column er kolonnenavnet i Pyspark DataFrame der de ledede radverdiene er plassert basert på verdiene i denne kolonnen.
  2. Forskyvningen spesifiserer heltall for å returnere det nummeret av de neste radene til gjeldende radverdier.

Trinn:

  1. Lag en Pyspark DataFrame som har noen lignende verdier i minst en kolonne.
  2. Partisjon Dataene ved hjelp av PartitionBy () -metoden tilgjengelig i vindusfunksjonen og bestill dem basert på kolonnen ved å bruke OrderBy () -funksjonen.

Syntaks:

partisjon = vindu.Partitionby (“kolonne”).Orderby (“Kolonne”)

Vi kan bestille de partisjonerte dataene med den partisjonerte kolonnen eller en hvilken som helst annen kolonne.

Nå kan du bruke bly- () -funksjonen på de partisjonerte radene ved å bruke over() funksjon.

Vi legger til en kolonne for å lagre radnummeret ved hjelp av WithColumn () funksjon.

Syntaks:

DataFrame_obj.WithColumn ("Lead_Column", Lead ("Column", Offset).over (partisjon))

Her spesifiserer navnet radnavnet og DataFrame_OBJ er vår Pyspark DataFrame.

La oss implementere koden.

Eksempel 1:

Her oppretter vi en Pyspark DataFrame som har 5 kolonner - ['Subject_id', 'Name', 'Age', 'Technology1', 'Technology2'] med 10 rader og partisjon av radene basert på Teknologi1 Bruke vindusfunksjonen. Etter det leder vi 1 rad.

Importer pyspark
Fra Pyspark.SQL import *
Spark_app = SparkSession.bygger.AppName ('_').getorCreate ()
Studenter = [(4, 'Sravan', 23, 'PHP', 'Testing'),
(4, 'Sravan', 23, 'PHP', 'Testing'),
(46, 'Mounika', 22, '.Nett ',' 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, '.Nett ',' testing ')
]
DataFrame_OBJ = Spark_App.CreateTataFrame (Studenter, ['Subject_id', 'Name', 'Age', 'Technology1', 'Technology2'])
Print ("---------- Faktisk DataFrame ----------")
DataFrame_obj.forestilling()
# Importer vindusfunksjonen
Fra Pyspark.SQL.Vindusimportvindu
#import ledelsen fra Pyspark.SQL.funksjoner
Fra Pyspark.SQL.Funksjoner importerer bly
#Partition DataFrame basert på verdiene i Technology1 -kolonnen og
#Order radene i hver partisjon basert på emne_id -kolonnen
partisjon = vindu.Partitionby ("Technology1").Orderby ('emne_id')
Print ("---------- Partitioned DataFrame ----------")
#Now Nevn bly med offset-1 basert på emne_id
DataFrame_obj.WithColumn ("Lead", Lead ("Subject_id", 1).over (partisjon)).forestilling()

Produksjon:

Forklaring:

Den første utgangen representerer de faktiske dataene som er til stede i DataFrame. I den andre utgangen gjøres partisjonen basert på Teknologi1 kolonne.

Det totale antall partisjoner er 4.

Partisjon 1:

De .Net skjedde to ganger i den første partisjonen. Siden vi spesifiserte bly-offset som 1, den siste .Netto verdi er null og den første .Netto verdi er neste rad subjekt_idverdi - 46.

Partisjon 2:

Hadoop skjedde en gang i den andre partisjonen. Så bly er null.

Partisjon 3:

Oracle skjedde fire ganger i tredje partisjon.

  1. For det siste orakelet er bly null.
  2. For det første Oracle er hovedverdien 4 (siden neste rad Subject_id -verdien er 4).
  3. For det tredje Oracle er hovedverdien 12 (siden neste rad Subject_id -verdien er 12).

For det fjerde Oracle er hovedverdien 46 (siden neste rad subjekt_idverdi er 46).

Partisjon 4:

PHP skjedde tre ganger i fjerde partisjon.

  1. Hovedverdien for 3. PHP er null.
  2. Leadverdien for 1. PHP er 4 (siden neste rad subjekt_idverdi er 4).
  3. Hovedverdien for 2. PHP er 4 (siden neste rad subjekt_idverdi er 4).

Eksempel 2:

Led radene med 2. Forsikre deg om at du opprettet Pyspark DataFrame som sett i eksempel 1.

# Importer vindusfunksjonen
Fra Pyspark.SQL.Vindusimportvindu
#import ledelsen fra Pyspark.SQL.funksjoner
Fra Pyspark.SQL.Funksjoner importerer bly
#Partition DataFrame basert på verdiene i Technology1 -kolonnen og
#Order radene i hver partisjon basert på emne_id -kolonnen
partisjon = vindu.Partitionby ("Technology1").Orderby ('emne_id')
Print ("---------- Partitioned DataFrame ----------")
#Now Nevn bly med offset-2 basert på emne_id
DataFrame_obj.WithColumn ("Lead", Lead ("Subject_id", 2).over (partisjon)).forestilling()

Produksjon:

Forklaring:

Partisjonen gjøres basert på Teknologi1 kolonne.

Det totale antall partisjoner er 4.

Partisjon 1:

De .Net skjedde to ganger i den første partisjonen. Siden vi spesifiserte bly-offset som 2, er forskyvningen null for begge verdiene.

Partisjon 2:

Hadoop skjedde en gang i den andre partisjonen. Så bly er null.

Partisjon 3:

Oracle skjedde fire ganger i tredje partisjon.

  • I de to siste orakelet er ledelsen null.
  • For det første Oracle er hovedverdien 12 (siden de neste 2 radene subjekt_idverdien er 12).
  • For det andre Oracle er hovedverdien 46 (siden de neste 2 radene er subjektet_idverdi 46).

Partisjon 4:

PHP skjedde tre ganger i fjerde partisjon.

  • I de to siste orakelet er ledelsen null.
  • For den første PHP er hovedverdien 4 (siden de neste 2 radene subjekt_idverdien er 4).

Eksempel 3:

Led radene med 2 basert på alderssøylen. Forsikre deg om at du opprettet Pyspark DataFrame som sett i eksempel 1.

# Importer vindusfunksjonen
Fra Pyspark.SQL.Vindusimportvindu
#import ledelsen fra Pyspark.SQL.funksjoner
Fra Pyspark.SQL.Funksjoner importerer bly
#Partition DataFrame basert på verdiene i Technology1 -kolonnen og
#Order radene i hver partisjon basert på emne_id -kolonnen
partisjon = vindu.Partitionby ("Technology1").Orderby ('emne_id')
Print ("---------- Partitioned DataFrame ----------")
#Now Nevn bly med offset-2 basert på alder
DataFrame_obj.WithColumn ("Lead", bly ("Alder", 2).over (partisjon)).forestilling()

Produksjon:

Forklaring:

Partisjonen gjøres basert på Teknologi1 kolonne og ledningen er definert basert på alderssøylen.

Det totale antall partisjoner er 4.

Partisjon 1:

De .Net skjedde to ganger i den første partisjonen. Siden vi spesifiserte bly-offset som 2, er forskyvningen null for begge verdiene.

Partisjon 2:

Hadoop skjedde en gang i den andre partisjonen. Så ledelsen er null.

Partisjon 3:

Oracle skjedde fire ganger i tredje partisjon.

  • For de to siste orakelet er ledelsen null.
  • For det første Oracle er hovedverdien 22 (siden de neste 2 radverdien er 22).
  • For det andre Oracle er hovedverdien 22 (siden de neste 2 radverdien er 22).

Partisjon 4:

PHP skjedde tre ganger i fjerde partisjon.

  • For de to siste orakelet er ledelsen null.
  • For den første PHP er hovedverdien 21 (siden de neste 2 radverdien er 21).

Konklusjon

Vi lærte hvordan vi får hovedverdiene i Pyspark DataFrame i de partisjonerte radene. Lead () -funksjonen i Pyspark er tilgjengelig i vindusmodulen som brukes til å returnere neste radverdier til de gjeldende radene. Det tar en forskyvningsparameter som representerer det totale antall rader slik at de neste radverdiene returneres til de faktiske radene. For den første siste raden/s er (offset) nullene plassert. Vi lærte de forskjellige eksemplene ved å sette de forskjellige forskyvningene.