Pyspark array_union, array_intersect, & array_except

Pyspark array_union, array_intersect, & array_except
I Python er Pyspark en Spark -modul som brukes til å gi en lignende type prosessering som Spark ved hjelp av DataFrame. Det gir StructType () og structfield () -metodene som brukes til å definere kolonnene i Pyspark DataFrame. Ved å bruke disse metodene, kan vi definere kolonnenavn og datatyper av de spesielle kolonnene.

La oss diskutere dem en etter en

Struktureltype ()

Denne metoden brukes til å definere strukturen til Pyspark DataFrame. Den vil godta en liste over datatyper sammen med kolonnenavn for den gitte DataFrame. Dette er kjent som skjemaet for Dataframe. Den lagrer en samling felt

Structfield ()

Denne metoden brukes inne i strukturen () metoden for Pyspark DataFrame. Den aksepterer kolonnenavn med datatypen.

ArrayType ()

Denne metoden brukes til å definere arraystrukturen til Pyspark DataFrame. Den vil godta en liste over datatyper. Den lagrer en samling felt. Vi kan plassere datatyper inne i ArrayType ().

Så i denne artikkelen må vi lage en dataaframe med en matrise. La oss lage en dataaframe med 3 kolonner. Den første kolonnen er Student_category som refererer til heltallfeltet for å lagre studenter ID -er og den andre kolonnen - Student_first_name, tredje kolonne - Student_last_name brukes til å lagre strengverdier i en matrise opprettet ved hjelp av arrayPe ().

#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 *
#Create en app som heter Linuxhint
Spark_app = SparkSession.bygger.AppName ('Linuxhint').getorCreate ()
# Vurder en matrise med 5 elementer
my_array_data = [(1, ['a'], ['a']), (2, ['b', 'l', 'b'], ['a']), (3, ['k' , 'A', 'k'], ['k', 'a', 'k']), (4, ['k'], ['k', 'a', 'k']), (( 3, ['B', 'P'], ['A'])]
#definer strukturen og strukturfeltene
#for dataene ovenfor
skjema = structType ([structField ("student_category", integertype ()), structField ("student_first_name", arrayType (StringType ())), structField ("Student_last_name", ArrayType (StringType ())))))
#skape dataaframe og legge til skjemaet til dataaframe
df = spark_app.CreateTataFrame (my_array_data, skjema = skjema)
df.forestilling()

Produksjon

Array_Union ()

Array_Union () brukes til å sammenføyning. Det tar to kolonner av array-type som parametere.

Den returnerer alle verdiene unike (bare en gang).

Syntaks

array_union (array_column1, array_column2)

Parametere

  1. array_column1 er den første array -kolonnen som har matriser med verdier
  2. array_column2 er den andre array -kolonnen som har matriser med verdier.

Array_Union () -funksjonen brukes med Select () -metoden for å gjøre handlingen.

Eksempel
I dette eksemplet vil vi bli med i to array -type kolonner - student_first_name og student_last_name

#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 *
#Create en app som heter Linuxhint
Spark_app = SparkSession.bygger.AppName ('Linuxhint').getorCreate ()
# Vurder en matrise med 5 elementer
my_array_data = [(1, ['a'], ['a']), (2, ['b', 'l', 'b'], ['a']), (3, ['k' , 'A', 'k'], ['k', 'a', 'k']), (4, ['k'], ['k', 'a', 'k']), (( 3, ['B', 'P'], ['A'])]
#definer strukturen og strukturfeltene
#for dataene ovenfor
skjema = structType ([structField ("student_category", integertype ()), structField ("student_first_name", arrayType (StringType ())), structField ("Student_last_name", ArrayType (StringType ())))))
#skape dataaframe og legge til skjemaet til dataaframe
df = spark_app.CreateTataFrame (my_array_data, skjema = skjema)
#Apply Array_Union på student_first_name og student_last_name
df.velg ("student_first_name", "student_last_name",
array_union ("student_first_name", "student_last_name")).forestilling()

Produksjon

Vi kan se det

  1. I første rad -[a] Union [a]: [a] (retur unikt)
  2. I andre rad - [B, L, B] Union [A]: [B, L, A]
  3. I tredje rad - [k, a, k] union [k, a, k]: [k, a] (bare k og a er unike)
  4. I fjerde rad -[k] Union [k, a, k]: [k, a] (bare k og a er unik)
  5. I femte rad -[B, P] Union [A]: [B, P, A]

Array_InterSect ()

Array_InterSect () brukes til å slå sammen de to array -type kolonnene i PySpark DataFrame ved å returnere bare vanlige verdier fra begge matriser til en ny matrise. Det tar to kolonner av array -type som parametere.

Syntaks

Array_InterSect (Array_Column1, Array_Column2)

Parametere

  1. array_column1 er den første array -kolonnen som har matriser med verdier
  2. array_column2 er den andre array -kolonnen som har matriser med verdier.

Array_InterSect () -funksjonen brukes med Select () -metoden for å gjøre handlingen.

Eksempel
I dette eksemplet vil vi krysse to kolonner av array -typen - Student_first_name og student_last_name

#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 *
#Create en app som heter Linuxhint
Spark_app = SparkSession.bygger.AppName ('Linuxhint').getorCreate ()
# Vurder en matrise med 5 elementer
my_array_data = [(1, ['a'], ['a']), (2, ['b', 'l', 'b'], ['a']), (3, ['k' , 'A', 'k'], ['k', 'a', 'k']), (4, ['k'], ['k', 'a', 'k']), (( 3, ['B', 'P'], ['A'])]
#definer strukturen og strukturfeltene
#for dataene ovenfor
skjema = structType ([structField ("student_category", integertype ()), structField ("student_first_name", arrayType (StringType ())), structField ("Student_last_name", ArrayType (StringType ())))))
#skape dataaframe og legge til skjemaet til dataaframe
df = spark_app.CreateTataFrame (my_array_data, skjema = skjema)
#Apply Array_Intersect på Student_First_name og Student_last_name
df.velg ("student_first_name", "student_last_name",
array_intersect ("student_first_name", "student_last_name"))).forestilling()

Produksjon

Vi kan se det

  1. I første rad -[a] kryss [a]: [a] (a er vanlig)
  2. I andre rad - [b, l, b] kryss [a]: [] (ingen element er vanlig)
  3. I tredje rad - [k, a, k] kryss [k, a, k]: [k, a] (k og a er vanlig)
  4. I fjerde rad -[k] kryss [k, a, k]: [k] (bare k er vanlig)
  5. I femte rad -[b, p] kryss [a]: [] (ingen element er vanlig)

Array_Except ()

array_except () brukes til å slå sammen de to array -type kolonnene i PySpark DataFrame ved å returnere verdier i Array1, men ikke i Array2.

Den returnerer alle verdiene unike (bare en gang).

Syntaks

array_except (array_column1, array_column2)

Parametere

  1. array_column1 er den første array -kolonnen som har matriser med verdier
  2. array_column2 er den andre array -kolonnen som har matriser med verdier.

Array_Except () -funksjon brukes med Select () -metoden for å gjøre handlingen.

Eksempel
I dette eksemplet vil vi utføre array_except to array -type kolonner -

  1. Student_last_name og student_first_name
  2. Student_first_name og student_last_name
#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 *
#Create en app som heter Linuxhint
Spark_app = SparkSession.bygger.AppName ('Linuxhint').getorCreate ()
# Vurder en matrise med 5 elementer
my_array_data = [(1, ['a'], ['a']), (2, ['b', 'l', 'b'], ['a']), (3, ['k' , 'A', 'k'], ['k', 'a', 'k']), (4, ['k'], ['k', 'a', 'k']), (( 3, ['B', 'P'], ['A'])]
#definer strukturen og strukturfeltene
#for dataene ovenfor
skjema = structType ([structField ("student_category", integertype ()), structField ("student_first_name", arrayType (StringType ())), structField ("Student_last_name", ArrayType (StringType ())))))
#skape dataaframe og legge til skjemaet til dataaframe
df = spark_app.CreateTataFrame (my_array_data, skjema = skjema)
#Apply Array_Except på Student_last_name og student_first_name
df.velg ("student_last_name", "student_first_name",
array_except ("student_last_name", "student_first_name"))).forestilling()
#Apply array_except på student_first_name og student_last_name
df.velg ("student_first_name", "student_last_name",
array_except ("student_first_name", "student_last_name")).forestilling()

Produksjon

I det første resultatet

  1. [A] bortsett fra [a] - [] (siden en fra kolonne1 eksisterer også i kolonne2)
  2. [A] bortsett fra [b, l, b] - [a] (siden a fra kolonne1 ikke eksisterer i kolonne2)
  3. [K, a, k] unntatt [k, a, k] - [] (siden k, a, k fra kolonne1 eksisterer også i kolonne2) også)
  4. [K, a, k] unntatt [k] - [a] (siden a fra kolonne1 ikke eksisterer i kolonne2)
  5. [A] bortsett fra [b, p] - [a] (siden a fra kolonne1 ikke eksisterer i kolonne2)

I det andre resultatet

  1. [A] bortsett fra [a] - [] (siden en fra kolonne1 eksisterer også i kolonne2)
  2. [B, l, b] unntatt [a] - [b, l] (siden b, l fra kolonne1 ikke eksisterer i kolonne2)
  3. [K, a, k] unntatt [k, a, k] - [] (siden k, a, k fra kolonne1 eksisterer også i kolonne2) også)
  4. [K] bortsett fra [k, a, k] - [] (siden k fra kolonne1 eksisterer også i kolonne2) også)
  5. [B, p] unntatt [a] - [b, p] (siden b, p fra kolonne1 ikke eksisterer i kolonne2)

Konklusjon

I denne opplæringen så vi tre forskjellige funksjoner utført på kolonner av array-type i Pyspark DataFrame. Array_Union () brukes til å sammenføyning. Array_InterSect () brukes til å slå sammen de to kolonnene av array-typen i Pyspark DataFrame ved å returnere bare vanlige verdier fra begge matriser til en ny matrise. Array_Except () brukes til å slå sammen de to kolonnene av array-typen i Pyspark DataFrame ved å returnere verdier i Array1, men ikke i Array2.