I Pyspark er det mulig å dele opp radene i DataFrame ved å bruke vindusfunksjonen. Det er tilgjengelig i Pyspark.SQL.vindu modul.
Fordelen med partisjon er å oppnå datakonsistens og gruppering. Etter å ha utført partisjonen, kan vi sette rekkene til radene i hver partisjon ved hjelp av rangering () -funksjonen.
Det er mulig å skille ut radene i en dataaframe basert på verdiene i en bestemt kolonne. Så alle lignende verdier er satt til hver partisjon.
Rang () vindusfunksjon
Rangering i Pyspark er en vindusfunksjon som setter rekkene til radene i hver partisjon.
Rangeringen starter fra 1, og hvis noen verdier er de samme i to eller flere rader, vil samme rang bli tildelt. Imidlertid, for neste rad, vil rangeringen være følgende tall som teller fra de bundne radene (rader med samme rangering).
Her er verdiene fra kolonnen der vi spesifiserte kolonnen inni rekkefølge etter(). Så basert på verdiene i denne kolonnen, rang() sjekker og tildeler rangeringsnummeret.
Det viktigste er rang() er ikke tilgjengelig direkte. Vi må importere det fra Pyspark.SQL.funksjoner modul.
Syntaks for å importere modulen
Fra Pyspark.SQL.Funksjoner importerer rangeringEllers kan vi også gjøre det for å importere alle metoder fra denne modulen.
Fra Pyspark.SQL.Funksjoner importerer *Vi må følge trinnene nedenfor for å utføre partisjon og bruke rangering på partisjonerte data.
Trinn:
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å ved å bruke over() Funksjon på de partisjonerte radene, kan du bruke rang() funksjon. Så vi vil legge til en kolonne for å lagre radnummeret ved hjelp av WithColumn () funksjon.
Syntaks:
Så navnet spesifiserer radnavnet her, og DataFrame_OBJ er vår Pyspark DataFrame. La oss implementere koden.
Eksempel 1: Rangerteknologi1 av emne_id
Her vil vi lage en Pyspark DataFrame som har 5 kolonner: ['Subject_id', 'Name', 'Age', 'Technology1', 'Technology2'] med 10 rader og partisjon radene basert på Teknologi1 Bruke vindusfunksjonen.
Til slutt vil vi gi rekker til radene i alle partisjoner ved å legge til en ny kolonne som heter RANG.
Importer pysparkProduksjon:
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.
Totalt partisjoner: 4
Partisjon 1:
.Net skjedde to ganger i den første partisjonen. Verdiene i emn_id -kolonnen er de samme. Derfor returnerer rang () -funksjonen samme rangering for begge .Netto verdier.
Partisjon 2:
Hadoop skjedde en gang i den andre partisjonen. Så rangeringen er 1.
Partisjon 3:
Partisjon 4:
PHP forekom tre ganger i fjerde partisjon, og verdiene i emnet_id -kolonnen er de samme for alle. Derfor er rangering 1 for alle PHP.
Eksempel 2: Rank Technology2 av emne_id
Her vil vi dele opp radene basert på Technology2 Bruke vindusfunksjonen. Til slutt vil vi gi rekker til radene basert på emne_id -kolonnen i alle partisjoner ved å legge til en ny kolonne som heter “RANG”.
(Hvis du ikke opprettet Pyspark DataFrame, oppretter du det ved å bruke det første eksemplet.)
# Importer vindusfunksjonenProduksjon:
Forklaring
Utgangen representerer de faktiske dataene som er til stede i DataFrame.
I den andre utgangen gjøres partisjonen basert på Technology2 Kolonne og bestilt basert på emnet_id -kolonnen.
Totalt partisjoner: 3
Partisjon 1:
C# oppstod tre ganger i første partisjon. De to første verdiene i emn_id -kolonnen er de samme. Derfor returnerer Rank () -funksjonen samme rangering 1 for de to første C#, og for den tredje C#er rangering 3.
Partisjon 2:
HTML skjedde to ganger i den andre partisjonen, og emnet_idverdiene er forskjellige for disse to. Så rang 1 er tildelt for den første HTML, og rang 2 er tildelt for den andre.
Partisjon 3:
Eksempel 3: Rangerteknologi2 etter alder
Her vil vi dele opp radene basert på Technology2 Bruke vindusfunksjonen.
Til slutt vil vi gi rekker til radene basert på alderskolonnen i alle partisjoner ved å legge til en ny kolonne som heter “RANG”.
(Hvis du ikke opprettet Pyspark DataFrame, oppretter du det ved å bruke det første eksemplet.)
# Importer vindusfunksjonenProduksjon:
Forklaring
Utgangen representerer de faktiske dataene som er til stede i DataFrame. I den andre utgangen gjøres partisjonen basert på Technology2 kolonne og bestilt basert på alderssøylen.
Totalt partisjoner: 3
Partisjon 1:
C# oppstod tre ganger i første partisjon. Og alle verdiene i alderskolonnen er forskjellige. Derfor returnerer rang () -funksjonen rekkene 1, 2 og 3 for tre C# -verdier.
Partisjon 2:
HTML skjedde to ganger i første partisjon. Alle verdiene i alderssøylen er forskjellige. Derfor returnerer rang () -funksjonen rekkene 1 og 2 for to HTML -verdier.
Partisjon 3:
Konklusjon
Vi diskuterte partisjonering av radene i Pyspark DataFrame og satte rangering i hver partisjon ved å bruke Rank () vindusfunksjonen. Rangering i Pyspark er en vindusfunksjon som setter rekkene til radene i hver partisjon. Sørg for å bruke denne kommandoen mens du bruker denne funksjonen Fra Pyspark.SQL.Funksjoner importerer rangering.