Pyspark array_union, array_intersect & array_except

Pyspark array_union, array_intersect & array_except
In Python ist PySpark ein Spark -Modul, mit dem eine ähnliche Art von Verarbeitung wie Spark mit DataFrame bereitgestellt wird. Es liefert die Methoden "StructType () und structfield (), mit denen die Spalten im PYSPARK -Datenrahmen definiert werden. Durch die Verwendung dieser Methoden können wir die Spaltennamen und die Datentypen der bestimmten Spalten definieren.

Lassen Sie uns sie nacheinander besprechen

Strukturtyp ()

Diese Methode wird verwendet. Es akzeptiert eine Liste von Datentypen zusammen mit Spaltennamen für den angegebenen Datenrahmen. Dies ist als Schema des Datenrahmens bekannt. Es speichert eine Sammlung von Feldern

Structfield ()

Diese Methode wird innerhalb der Strukturtyp () -Methode des PYSPARK -Datenframe. Es akzeptiert Spaltennamen mit dem Datentyp.

ArrayType ()

Diese Methode wird verwendet, um die Array -Struktur des PYSPark -Datenframe zu definieren. Es akzeptiert eine Liste von Datentypen. Es speichert eine Sammlung von Feldern. Wir können Datentypen in ArrayType () platzieren.

In diesem Artikel müssen wir also einen Datenrahmen mit einem Array erstellen. Erstellen wir einen Datenrahmen mit 3 Spalten. Die erste Spalte ist student_category, die sich auf das Integer -Feld bezieht, um Studenten -IDs und die zweite Spalte zu speichern.

#Amportieren Sie das PYSPARK -Modul
pysspark importieren
#import SparkSession für die Erstellung einer Sitzung
aus pysspark.SQL Import SparkSession
#und Strukturtypen und andere Datentypen importieren
aus pysspark.sql.Typen importttypen, structfield, StringType, IntegerType, FAUTTYPE, ArrayType
aus pysspark.sql.Funktionen importieren *
#create eine App namens LinuxHint
Spark_app = SparkSession.Erbauer.AppName ('LinuxHint').Getorcreate ()
# Betrachten Sie ein Array mit 5 Elementen
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'])]]
#Definieren Sie den Struktur- und Strukturen
#Für die obigen Daten
schema = structTtype ([structfield ("student_category", IntegerType ()), structfield ("student_first_name", arrayType (StringType ())), structfield ("student_last_name", arrayType (StritchType ()))))
#Erstellen Sie den Datenrahmen und fügen Sie dem DataFrame Schema hinzu
df = spark_app.erstellteataframe (my_array_data, schema = schema)
df.zeigen()

Ausgang

Array_union ()

Array_union () wird verwendet, um die beiden Array-Typ-Spalten im PYSPARK-Datenrahmen zu verbinden, indem Werte aus beiden Array-Spalten in ein Array zurückgegeben werden. Es dauert zwei Array-Spalten als Parameter.

Es gibt alle eindeutigen Werte zurück (nur einmal).

Syntax

Array_union (Array_Column1, Array_Column2)

Parameter

  1. Array_Column1 ist die erste Array -Spalte mit Arrays mit Werten
  2. Array_Column2 ist die zweite Array -Spalte mit Arrays mit Werten.

Die Funktion array_union () wird mit der Methode Select () verwendet, um die Aktion auszuführen.

Beispiel
In diesem Beispiel werden wir zwei Spalten der Array -Typ anschließen - student_first_name und student_last_name

#Amportieren Sie das PYSPARK -Modul
pysspark importieren
#import SparkSession für die Erstellung einer Sitzung
aus pysspark.SQL Import SparkSession
#und Strukturtypen und andere Datentypen importieren
aus pysspark.sql.Typen importttypen, structfield, StringType, IntegerType, FAUTTYPE, ArrayType
aus pysspark.sql.Funktionen importieren *
#create eine App namens LinuxHint
Spark_app = SparkSession.Erbauer.AppName ('LinuxHint').Getorcreate ()
# Betrachten Sie ein Array mit 5 Elementen
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'])]]
#Definieren Sie den Struktur- und Strukturen
#Für die obigen Daten
schema = structTtype ([structfield ("student_category", IntegerType ()), structfield ("student_first_name", arrayType (StringType ())), structfield ("student_last_name", arrayType (StritchType ()))))
#Erstellen Sie den Datenrahmen und fügen Sie dem DataFrame Schema hinzu
df = spark_app.erstellteataframe (my_array_data, schema = schema)
#Apply array_union auf student_first_name und student_last_name
df.select ("student_first_name", "student_last_name" ",
Array_union ("student_first_name", "student_last_name")).zeigen()

Ausgang

Wir können das sehen

  1. In der ersten Reihe -[A] Union [a]: [a] (Rückkehr einzigartig)
  2. In der zweiten Reihe - [B, L, B] Union [A]: [B, L, A]
  3. In der dritten Reihe - [k, a, k] Union [k, a, k]: [k, a] (nur k und a sind einzigartig)
  4. In der vierten Reihe -[k] Union [k, a, k]: [k, a] (nur k und a sind einzigartig)
  5. In der fünften Reihe -[B, P] Union [A]: [B, P, A]

Array_intersect ()

Array_intersect () wird verwendet, um die beiden Spalten des Array -Typs im PYSPARK -Datenrahmen zu verbinden, indem nur gemeinsame Werte aus beiden Arrays in ein neues Array zurückgegeben werden. Es dauert zwei Array -Spalten als Parameter.

Syntax

Array_intersect (array_column1, array_column2)

Parameter

  1. Array_Column1 ist die erste Array -Spalte mit Arrays mit Werten
  2. Array_Column2 ist die zweite Array -Spalte mit Arrays mit Werten.

Die Funktion array_intersect () wird mit der Methode Select () verwendet, um die Aktion auszuführen.

Beispiel
In diesem Beispiel werden wir zwei Spalten von Array -Typen überschneiden - student_first_name und student_last_name

#Amportieren Sie das PYSPARK -Modul
pysspark importieren
#import SparkSession für die Erstellung einer Sitzung
aus pysspark.SQL Import SparkSession
#und Strukturtypen und andere Datentypen importieren
aus pysspark.sql.Typen importttypen, structfield, StringType, IntegerType, FAUTTYPE, ArrayType
aus pysspark.sql.Funktionen importieren *
#create eine App namens LinuxHint
Spark_app = SparkSession.Erbauer.AppName ('LinuxHint').Getorcreate ()
# Betrachten Sie ein Array mit 5 Elementen
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'])]]
#Definieren Sie den Struktur- und Strukturen
#Für die obigen Daten
schema = structTtype ([structfield ("student_category", IntegerType ()), structfield ("student_first_name", arrayType (StringType ())), structfield ("student_last_name", arrayType (StritchType ()))))
#Erstellen Sie den Datenrahmen und fügen Sie dem DataFrame Schema hinzu
df = spark_app.erstellteataframe (my_array_data, schema = schema)
#Apply array_intersect auf student_first_name und student_last_name
df.select ("student_first_name", "student_last_name" ",
array_intersect ("student_first_name", "student_last_name")).zeigen()

Ausgang

Wir können das sehen

  1. In der ersten Reihe -[a] schneiden [a]: [a] (a ist häufig)
  2. In der zweiten Reihe - [B, L, B] kreuzen sich [a]: [] (kein Element ist häufig)
  3. In der dritten Reihe - [k, a, k] kreuzen sich [k, a, k]: [k, a] (k und a sind häufig)
  4. In der vierten Reihe -[k] kreuzen sich [k, a, k]: [k] (nur k ist häufig)
  5. In der fünften Reihe -[B, p] kreuzen sich [a]: [] (kein Element ist häufig)

array_except ()

Array_Except () wird verwendet, um die beiden Spalten des Array -Typs im PYSPARK -Datenrahmen zu verbinden, indem Werte in Array1 zurückgegeben werden, jedoch nicht in Array2.

Es gibt alle eindeutigen Werte zurück (nur einmal).

Syntax

array_except (array_column1, array_column2)

Parameter

  1. Array_Column1 ist die erste Array -Spalte mit Arrays mit Werten
  2. Array_Column2 ist die zweite Array -Spalte mit Arrays mit Werten.

Die Funktion array_except () wird mit der Methode Select () verwendet, um die Aktion auszuführen.

Beispiel
In diesem Beispiel werden wir Array_Except zwei Spalten vom Array -Typ durchführen -

  1. Student_last_name und student_first_name
  2. Student_first_name und student_last_name
#Amportieren Sie das PYSPARK -Modul
pysspark importieren
#import SparkSession für die Erstellung einer Sitzung
aus pysspark.SQL Import SparkSession
#und Strukturtypen und andere Datentypen importieren
aus pysspark.sql.Typen importttypen, structfield, StringType, IntegerType, FAUTTYPE, ArrayType
aus pysspark.sql.Funktionen importieren *
#create eine App namens LinuxHint
Spark_app = SparkSession.Erbauer.AppName ('LinuxHint').Getorcreate ()
# Betrachten Sie ein Array mit 5 Elementen
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'])]]
#Definieren Sie den Struktur- und Strukturen
#Für die obigen Daten
schema = structTtype ([structfield ("student_category", IntegerType ()), structfield ("student_first_name", arrayType (StringType ())), structfield ("student_last_name", arrayType (StritchType ()))))
#Erstellen Sie den Datenrahmen und fügen Sie dem DataFrame Schema hinzu
df = spark_app.erstellteataframe (my_array_data, schema = schema)
#Apply array_except auf student_last_name und student_first_name
df.select ("student_last_name", "student_first_name" ",
array_except ("student_last_name", "student_first_name")).zeigen()
#Apply array_except auf student_first_name und student_last_name
df.select ("student_first_name", "student_last_name" ",
array_except ("student_first_name", "student_last_name")).zeigen()

Ausgang

Im ersten Ergebnis

  1. [A] außer [a] - [] (da A aus Spalte1 auch in Spalte2 existiert)
  2. [A] außer [b, l, b] - [a] (da a aus Spalte1 nicht in Spalte2 existiert)
  3. [K, a, k] außer [k, a, k] - [] (da k, a, k aus Spalte1 auch in Spalte2 existiert)
  4. [K, a, k] außer [k] - [a] (da a aus Spalte1 nicht in Spalte2 existiert)
  5. [A] außer [b, p] - [a] (da a aus Spalte1 nicht in Spalte2 existiert)

Im zweiten Ergebnis

  1. [A] außer [a] - [] (da A aus Spalte1 auch in Spalte2 existiert)
  2. [B, l, b] außer [a] - [b, l] (da b, l aus Spalte1 nicht in Spalte2 existiert)
  3. [K, a, k] außer [k, a, k] - [] (da k, a, k aus Spalte1 auch in Spalte2 existiert)
  4. [K] außer [k, a, k] - [] (da K aus Spalte1 auch in Spalte2 existiert)
  5. [B, p] außer [a] - [b, p] (da b, p aus Spalte1 nicht in Spalte2 existiert)

Abschluss

In diesem Tutorial haben wir drei verschiedene Funktionen gesehen. Array_union () wird verwendet, um die beiden Array-Typ-Spalten im PYSPARK-Datenrahmen zu verbinden, indem Werte aus beiden Array-Spalten in ein Array zurückgegeben werden. Array_intersect () wird verwendet, um die beiden Array-Typ-Spalten im PYSPARK-Datenrahmen zu verbinden, indem nur gemeinsame Werte aus beiden Arrays in ein neues Array zurückgegeben werden. Array_Except () wird verwendet, um die beiden Array-Typ-Spalten im PYSPARK-Datenrahmen zu verbinden, indem Werte in Array1 zurückgegeben werden, jedoch nicht in Array2.