Pyspark array_contains

Pyspark array_contains
Denne artikkelen vil introdusere og demonstrere Pysparks array_contains () metode. Metoden brukes til å sjekke om spesifikke verdier eksisterer i en matrise i Pyspark.

I denne artikkelen må vi lage en dataaframe med en matrise. La oss lage en dataaframe med 2 kolonner. Første kolonne er student_category som refererer til heltallfeltet for å lagre student -ID -er. Den andre kolonnen - Student_full_name brukes til å lagre strengverdier i en matrise opprettet ved hjelp av ArrayType ().

#import Pyspark -modulen
Importer pyspark
#import SparkSession for å lage en økt
Fra Pyspark.SQL Import SparkSession
#og importerer strukturtyper og andre datatyper
Fra Pyspark.SQL.typer importerer struktur, strukturfelt, strengtype, integertype, floattype, arrayType
Fra Pyspark.SQL.Funksjoner importerer array_contains
#Create en app som heter Linuxhint
Spark_app = SparkSession.bygger.AppName ('Linuxhint').getorCreate ()
# Vurder en matrise med 5 elementer
my_array_data = [(1, ['a']), (2, ['b', 'l', 'b']), (3, ['k', 'a', 'k']), (( 4, ['k']), (3, ['b', 'p'])]
#definer strukturen og strukturfeltene
#for dataene ovenfor
skjema = structType ([structField ("student_category", integertype ()), structfield ("student_full_name", arrayType (StringType ()))])
#skape dataaframe og legge til skjemaet til dataaframe
df = spark_app.CreateTataFrame (my_array_data, skjema = skjema)
df.forestilling()

Produksjon:

Nå får vi se hva array_contains () gjør.

array_contains () brukes til å sjekke om matrisen har det spesifiserte elementet. Hvis ja, vil det komme tilbake, ellers falsk.

Dette er mulig å sjekke ved hjelp av Select () -metoden. Inne i denne metoden kan vi bruke Array_Contains () -funksjonen og returnere resultatet.

Syntaks:

Dataramme.velg (array_contains (array_column, verdi '))

Parametere:

  1. array_column inneholder array -type verdier
  2. Verdien brukes til å sjekke om den eksisterer i array_column eller ikke.

Komme tilbake:

Det vil returnere sann/falsk over alle radene i en matrise -kolonne.

Eksempel 1:

I dette eksemplet vil vi sjekke om Student_full_name -kolonnen har 'l' i alle rader ved hjelp av array_contains () -funksjonen.

#import Pyspark -modulen
Importer pyspark
#import SparkSession for å lage en økt
Fra Pyspark.SQL Import SparkSession
#og importerer strukturtyper og andre datatyper
Fra Pyspark.SQL.typer importerer struktur, strukturfelt, strengtype, integertype, floattype, arrayType
Fra Pyspark.SQL.Funksjoner importerer array_contains
#Create en app som heter Linuxhint
Spark_app = SparkSession.bygger.AppName ('Linuxhint').getorCreate ()
# Vurder en matrise med 5 elementer
my_array_data = [(1, ['a']), (2, ['b', 'l', 'b']), (3, ['k', 'a', 'k']), (( 4, ['k']), (3, ['b', 'p'])]
#definer strukturen og strukturfeltene
#for dataene ovenfor
skjema = structType ([structField ("student_category", integertype ()), structfield ("student_full_name", arrayType (StringType ()))])
#skape dataaframe og legge til skjemaet til dataaframe
df = spark_app.CreateTataFrame (my_array_data, skjema = skjema)
# sjekk student_full_name - l i alle rader ved hjelp av array_contains () -funksjonen.
df.velg ("student_full_name", array_contains ('student_full_name', 'l')).forestilling()

Produksjon:

Her valgte vi Student_full_name kolonner. Den første kolonnen er den faktiske kolonnen, og den andre kolonnen er resultatet som returneres av Array_Contains () -funksjonen.

Bare den andre raden har 'l' verdi, så den returnerer sant, og resten resulterer til falsk.

Eksempel 2:

I dette eksemplet vil vi sjekke om Student_full_name -kolonnen har 'k' i alle rader ved hjelp av array_contains () -funksjonen.

#import Pyspark -modulen
Importer pyspark
#import SparkSession for å lage en økt
Fra Pyspark.SQL Import SparkSession
#og importerer strukturtyper og andre datatyper
Fra Pyspark.SQL.typer importerer struktur, strukturfelt, strengtype, integertype, floattype, arrayType
Fra Pyspark.SQL.Funksjoner importerer array_contains
#Create en app som heter Linuxhint
Spark_app = SparkSession.bygger.AppName ('Linuxhint').getorCreate ()
# Vurder en matrise med 5 elementer
my_array_data = [(1, ['a']), (2, ['b', 'l', 'b']), (3, ['k', 'a', 'k']), (( 4, ['k']), (3, ['b', 'p'])]
#definer strukturen og strukturfeltene
#for dataene ovenfor
skjema = structType ([structField ("student_category", integertype ()), structfield ("student_full_name", arrayType (StringType ()))])
#skape dataaframe og legge til skjemaet til dataaframe
df = spark_app.CreateTataFrame (my_array_data, skjema = skjema)
# sjekk student_full_name - k i alle rader ved hjelp av array_contains () -funksjonen.
df.velg ("student_full_name", array_contains ('student_full_name', 'k')).forestilling()

Produksjon:

Her valgte vi Student_full_name kolonner. Den første kolonnen er den faktiske kolonnen, og den andre kolonnen er resultatet som returneres av Array_Contains () -funksjonen.

Bare den tredje og fjerde raden har 'k' verdi, så den returnerer sann, og resten resulterer til falsk.

Hvis du nå vil returnere hele raden i DataFrame, basert på verdien som er spesifisert i Array_Contains () -metoden, kan du bruke hvor eller filter () -klausulen i stedet for valgt leddet.

Eksempel 1: Bruke hvor ()

I dette eksemplet vil vi returnere raden der Student_full_name -kolonnen har 'k' ved hjelp av array_contains () -funksjonen.

#import Pyspark -modulen
Importer pyspark
#import SparkSession for å lage en økt
Fra Pyspark.SQL Import SparkSession
#og importerer strukturtyper og andre datatyper
Fra Pyspark.SQL.typer importerer struktur, strukturfelt, strengtype, integertype, floattype, arrayType
Fra Pyspark.SQL.Funksjoner importerer array_contains
#Create en app som heter Linuxhint
Spark_app = SparkSession.bygger.AppName ('Linuxhint').getorCreate ()
# Vurder en matrise med 5 elementer
my_array_data = [(1, ['a']), (2, ['b', 'l', 'b']), (3, ['k', 'a', 'k']), (( 4, ['k']), (3, ['b', 'p'])]
#definer strukturen og strukturfeltene
#for dataene ovenfor
skjema = structType ([structField ("student_category", integertype ()), structfield ("student_full_name", arrayType (StringType ()))])
#skape dataaframe og legge til skjemaet til dataaframe
df = spark_app.CreateTataFrame (my_array_data, skjema = skjema)
# Returner Student_full_name - k ved hjelp av array_contains () -funksjonen.
df.hvor (array_contains ('student_full_name', 'k')).forestilling()

Produksjon:

Du kan se at rader ble returnert der student_fullnavn har k verdi.

Eksempel 2: Bruke filter ()

I dette eksemplet vil vi returnere raden der Student_full_name -kolonnen har 'k' ved hjelp av array_contains () -funksjonen med filterklausulen.

#import Pyspark -modulen
Importer pyspark
#import SparkSession for å lage en økt
Fra Pyspark.SQL Import SparkSession
#og importerer strukturtyper og andre datatyper
Fra Pyspark.SQL.typer importerer struktur, strukturfelt, strengtype, integertype, floattype, arrayType
Fra Pyspark.SQL.Funksjoner importerer array_contains
#Create en app som heter Linuxhint
Spark_app = SparkSession.bygger.AppName ('Linuxhint').getorCreate ()
# Vurder en matrise med 5 elementer
my_array_data = [(1, ['a']), (2, ['b', 'l', 'b']), (3, ['k', 'a', 'k']), (( 4, ['k']), (3, ['b', 'p'])]
#definer strukturen og strukturfeltene
#for dataene ovenfor
skjema = structType ([structField ("student_category", integertype ()), structfield ("student_full_name", arrayType (StringType ()))])
#skape dataaframe og legge til skjemaet til dataaframe
df = spark_app.CreateTataFrame (my_array_data, skjema = skjema)
# Returner Student_full_name - k ved hjelp av array_contains () -funksjonen.
df.filter (array_contains ('student_full_name', 'k')).forestilling()

Produksjon:

Du kan se at rader ble returnert der student_fullnavn har k verdi.

Konklusjon

Vi ble kjent med at array_contains () brukes til å sjekke om verdien er til stede i en rekke kolonner. Dette kan oppnås ved hjelp av SELECT -leddet.

Hvis du trenger å returnere rader der matrisen inneholder verdier, kan du i stedet for velge, bruke hvor eller filterklausulen.