Pyspark - Sumdistinct & Countdistinct

Pyspark - Sumdistinct & Countdistinct
I Python er Pyspark en Spark -modul som brukes til å gi en lignende type prosessering som Spark ved hjelp av DataFrame.

Pyspark - Sumdistinct ()

Sumdistinct () i Pyspark returnerer den distinkte totalverdien (sum) fra en bestemt kolonne i DataFrame. Det vil returnere summen ved å vurdere bare unike verdier. Det vil ikke ta duplikatverdier for å danne en sum.

Før det må vi lage Pyspark DataFrame for demonstrasjon.

Eksempel:

Vi vil lage en DataFrame med 5 rader og 6 kolonner og vise den ved hjelp av Show () -metoden.

#import Pyspark -modulen
Importer pyspark
#import SparkSession for å lage en økt
Fra Pyspark.SQL Import SparkSession
#Create en app som heter Linuxhint
Spark_app = SparkSession.bygger.AppName ('Linuxhint').getorCreate ()
# Lag studentdata med 5 rader og 6 attributter
Studenter = ['Rollno': '001', 'Navn': 'Sravan', 'Age': 23, 'Height': 5.79, 'vekt': 67, 'adresse': 'guntur',
'Rollno': '002', 'Navn': 'Ojaswi', 'Age': 16, 'Height': 3.69, 'vekt': 67, 'adresse': 'hyd',
'Rollno': '003', 'Navn': 'Gnanesh Chowdary', 'Age': 16, 'Height': 2.79, 'Vekt': 17, 'Adresse': 'Patna',
'Rollno': '004', 'Navn': 'Rohith', 'Age': 9, 'Height': 3.69, 'vekt': 28, 'adresse': 'hyd',
'Rollno': '005', 'Navn': 'Sridevi', 'Age': 37, 'Height': 5.79, 'vekt': 28, 'adresse': 'hyd']
# Lag DataFrame
df = spark_app.CreateTataFrame (studenter)
#Display DataFrame
df.forestilling()

Produksjon:

I ovennevnte Pyspark DataFrame observerte vi at i alderskolonne 16 skjedde 2 ganger, i høyden kolonne 5.79 og 3.69 skjedde to ganger, og i vektkolonne 67 og 28 skjedde to ganger.

Så Sumdistinct () anser disse duplikatverdiene som en enkelt verdi og danner summen i kolonnen.

Bruke Select () -metode

Vi kan få den distinkte totale verdien fra kolonnen i DataFrame ved hjelp av Select () -metoden. Ved hjelp av SumDistinct () -metoden kan vi få den distinkte totale verdien fra kolonnen. For å bruke denne metoden, må vi importere den fra Pyspark.SQL.Funksjonsmodul, og til slutt kan vi bruke Collect () -metoden for å få den distinkte summen fra kolonnen

Syntaks:

df.Velg (SumDistinct ('Column_name'))

Hvor,

  1. DF er inngangen Pyspark DataFrame
  2. Kolonne_navn er kolonnen for å få den distinkte sumverdien

Hvis vi ønsker å returnere den distinkte totale verdien fra flere kolonner, må vi bruke SumDistinct () -metoden inne i SELECT () -metoden ved å spesifisere kolonnens navn atskilt med et komma.

Syntaks:

df.Velg (SumDistinct ('Column_name'), SumDistinct ('Column_name'), .. ., Sumdistinct ('Column_name'))

Hvor,

  1. DF er inngangen Pyspark DataFrame
  2. Kolonne_navn er kolonnen for å få den distinkte sumverdien

Eksempel 1: Enkelt kolonne

Dette eksemplet vil få den distinkte totale verdien fra høydekolonnen i Pyspark DataFrame.

#import Pyspark -modulen
Importer pyspark
#import SparkSession for å lage en økt
Fra Pyspark.SQL Import SparkSession
#import sumdistinct () funksjon
Fra Pyspark.SQL.Funksjoner importerer sumdistinct
#Create en app som heter Linuxhint
Spark_app = SparkSession.bygger.AppName ('Linuxhint').getorCreate ()
# Lag studentdata med 5 rader og 6 attributter
Studenter = ['Rollno': '001', 'Navn': 'Sravan', 'Age': 23, 'Height': 5.79, 'vekt': 67, 'adresse': 'guntur',
'Rollno': '002', 'Navn': 'Ojaswi', 'Age': 16, 'Height': 3.69, 'vekt': 67, 'adresse': 'hyd',
'Rollno': '003', 'Navn': 'Gnanesh Chowdary', 'Age': 16, 'Height': 2.79, 'Vekt': 17, 'Adresse': 'Patna',
'Rollno': '004', 'Navn': 'Rohith', 'Age': 9, 'Height': 3.69, 'vekt': 28, 'adresse': 'hyd',
'Rollno': '005', 'Navn': 'Sridevi', 'Age': 37, 'Height': 5.79, 'vekt': 28, 'adresse': 'hyd']
# Lag DataFrame
df = spark_app.CreateTataFrame (studenter)
#Return den distinkte summen fra høydekolonnen
df.Velg (SumDistinct ('Høyde')).samle inn()

Produksjon:

[Rad (sum (distinkt høyde) = 12.27)]

Eksemplet ovenfor returnerer den distinkte totale verdien (summen) fra høydekolonnen.

Eksempel 2: Flere kolonner

Dette eksemplet vil få den distinkte totale verdien fra høyden, alderen og vektkolonnene i Pyspark DataFrame.

#import Pyspark -modulen
Importer pyspark
#import SparkSession for å lage en økt
Fra Pyspark.SQL Import SparkSession
#Create en app som heter Linuxhint
Spark_app = SparkSession.bygger.AppName ('Linuxhint').getorCreate ()
# Lag studentdata med 5 rader og 6 attributter
Studenter = ['Rollno': '001', 'Navn': 'Sravan', 'Age': 23, 'Height': 5.79, 'vekt': 67, 'adresse': 'guntur',
'Rollno': '002', 'Navn': 'Ojaswi', 'Age': 16, 'Height': 3.69, 'vekt': 67, 'adresse': 'hyd',
'Rollno': '003', 'Navn': 'Gnanesh Chowdary', 'Age': 16, 'Height': 2.79, 'Vekt': 17, 'Adresse': 'Patna',
'Rollno': '004', 'Navn': 'Rohith', 'Age': 9, 'Height': 3.69, 'vekt': 28, 'adresse': 'hyd',
'Rollno': '005', 'Navn': 'Sridevi', 'Age': 37, 'Height': 5.79, 'vekt': 28, 'adresse': 'hyd']
# Lag DataFrame
df = spark_app.CreateTataFrame (studenter)
#Return den distinkte summen fra høyde-, alders- og vektkolonnene
df.Velg (SumDistinct ('Høyde'), Sumdistinct ('Age'), Sumdistinct ('Vekt')).samle inn()

Produksjon:

[Rad (sum (distinkt høyde) = 12.27, sum (distinkt alder) = 85, sum (distinkt vekt) = 112)]]

Eksemplet ovenfor returnerer den distinkte totale verdien (summen) fra høyden, alderen og vektkolonnene.

Pyspark - Countdistinct ()

CountDistinct () i Pyspark returnerer det forskjellige antallet verdier (telling) fra en bestemt kolonne i DataFrame. Det vil returnere tellingen ved å vurdere bare unike verdier. Det vil ikke ta duplikatverdier for å danne en telling.

Før det må vi lage Pyspark DataFrame for demonstrasjon.

Eksempel:

Vi vil lage en DataFrame med 5 rader og 6 kolonner og vise den ved hjelp av Show () -metoden.

#import Pyspark -modulen
Importer pyspark
#import SparkSession for å lage en økt
Fra Pyspark.SQL Import SparkSession
#Create en app som heter Linuxhint
Spark_app = SparkSession.bygger.AppName ('Linuxhint').getorCreate ()
# Lag studentdata med 5 rader og 6 attributter
Studenter = ['Rollno': '001', 'Navn': 'Sravan', 'Age': 23, 'Height': 5.79, 'vekt': 67, 'adresse': 'guntur',
'Rollno': '002', 'Navn': 'Ojaswi', 'Age': 16, 'Height': 3.69, 'vekt': 67, 'adresse': 'hyd',
'Rollno': '003', 'Navn': 'Gnanesh Chowdary', 'Age': 16, 'Height': 2.79, 'Vekt': 17, 'Adresse': 'Patna',
'Rollno': '004', 'Navn': 'Rohith', 'Age': 9, 'Height': 3.69, 'vekt': 28, 'adresse': 'hyd',
'Rollno': '005', 'Navn': 'Sridevi', 'Age': 37, 'Height': 5.79, 'vekt': 28, 'adresse': 'hyd']
# Lag DataFrame
df = spark_app.CreateTataFrame (studenter)
#Display DataFrame
df.forestilling()

Produksjon:

I ovennevnte Pyspark DataFrame observerte vi at i alderskolonne 16 skjedde 2 ganger, i høyden kolonne 5.79 og 3.69 skjedde to ganger, og i vektkolonne 67 og 28 skjedde to ganger.

Så Countdistinct () anser disse duplikatverdiene som enkeltverdier og danner tellingen i kolonnen.

Bruke Select () -metode

Vi kan få det forskjellige antallet fra kolonnen i DataFrame ved hjelp av Select () -metoden. Ved hjelp av Countdistinct () -metoden kan vi få et tydelig antall rader fra kolonnen. For å bruke denne metoden, må vi importere den fra Pyspark.SQL.Funksjonsmodul, og til slutt kan vi bruke Collect () -metoden for å få den distinkte tellingen fra kolonnen

Syntaks:

df.Velg (CountDistinct ('Column_name'))

Hvor,

  1. DF er inngangen Pyspark DataFrame
  2. Kolonne_navn er kolonnen for å få det forskjellige antallet.

Hvis vi ønsker å returnere den distinkte tellingen fra flere kolonner, må vi bruke countdistinct () -metoden inne i Select () -metoden ved å spesifisere kolonnens navn atskilt med et komma.

Syntaks:

df.Velg (CountDistinct ('Column_name'), CountDistinct ('Column_name'), .. ., CountDistinct ('Column_name'))

Hvor,

  1. DF er inngangen Pyspark DataFrame
  2. Kolonne_navn er kolonnen for å få det forskjellige antallet rader.

Eksempel 1: Enkelt kolonne

Dette eksemplet vil få den distinkte tellingen fra høydekolonnen i Pyspark DataFrame.

#import Pyspark -modulen
Importer pyspark
#import SparkSession for å lage en økt
Fra Pyspark.SQL Import SparkSession
#import countDistinct () -funksjon
Fra Pyspark.SQL.Funksjoner importerer countdistinct
#Create en app som heter Linuxhint
Spark_app = SparkSession.bygger.AppName ('Linuxhint').getorCreate ()
# Lag studentdata med 5 rader og 6 attributter
Studenter = ['Rollno': '001', 'Navn': 'Sravan', 'Age': 23, 'Height': 5.79, 'vekt': 67, 'adresse': 'guntur',
'Rollno': '002', 'Navn': 'Ojaswi', 'Age': 16, 'Height': 3.69, 'vekt': 67, 'adresse': 'hyd',
'Rollno': '003', 'Navn': 'Gnanesh Chowdary', 'Age': 16, 'Height': 2.79, 'Vekt': 17, 'Adresse': 'Patna',
'Rollno': '004', 'Navn': 'Rohith', 'Age': 9, 'Height': 3.69, 'vekt': 28, 'adresse': 'hyd',
'Rollno': '005', 'Navn': 'Sridevi', 'Age': 37, 'Height': 5.79, 'vekt': 28, 'adresse': 'hyd']
# Lag DataFrame
df = spark_app.CreateTataFrame (studenter)
#Return den distinkte tellingen fra høydekolonnen
df.Velg (Countdistinct ('Høyde')).samle inn()

Produksjon:

[Rad (telling (distinkt høyde) = 3)]

I eksemplet ovenfor returneres den distinkte tellingen fra høydekolonnen.

Eksempel 2: Flere kolonner

Dette eksemplet vil få det forskjellige tellingen fra høyden, alderen og vektkolonnene i Pyspark DataFrame.

#import Pyspark -modulen
Importer pyspark
#import SparkSession for å lage en økt
Fra Pyspark.SQL Import SparkSession
#import countDistinct () -funksjon
Fra Pyspark.SQL.Funksjoner importerer countdistinct
#Create en app som heter Linuxhint
Spark_app = SparkSession.bygger.AppName ('Linuxhint').getorCreate ()
# Lag studentdata med 5 rader og 6 attributter
Studenter = ['Rollno': '001', 'Navn': 'Sravan', 'Age': 23, 'Height': 5.79, 'vekt': 67, 'adresse': 'guntur',
'Rollno': '002', 'Navn': 'Ojaswi', 'Age': 16, 'Height': 3.69, 'vekt': 67, 'adresse': 'hyd',
'Rollno': '003', 'Navn': 'Gnanesh Chowdary', 'Age': 16, 'Height': 2.79, 'Vekt': 17, 'Adresse': 'Patna',
'Rollno': '004', 'Navn': 'Rohith', 'Age': 9, 'Height': 3.69, 'vekt': 28, 'adresse': 'hyd',
'Rollno': '005', 'Navn': 'Sridevi', 'Age': 37, 'Height': 5.79, 'vekt': 28, 'adresse': 'hyd']
# Lag DataFrame
df = spark_app.CreateTataFrame (studenter)
#Return den distinkte tellingen fra høyde-, alders- og vektkolonnene
df.Velg (CountDistinct ('høyde'), Countdistinct ('Age'), CountDistinct ('Vekt')).samle inn()

Produksjon:

[Rad (telling (distinkt høyde) = 3, telling (distinkt alder) = 4, telling (distinkt vekt) = 3)]

Eksemplet ovenfor returnerer det distinkte tellingen fra høyden, alderen og vektkolonnene.

Konklusjon:

Vi diskuterte hvordan vi kan få den distinkte summen (total) verdien ved bruk av SumDistinct () og det distinkte antall rader (Count) ved bruk av CountDistinct () fra Pyspark DataFrame ved bruk.