Pyspark array_position & array_repeat

Pyspark array_position & array_repeat
„In Python ist PySpark ein Spark -Modul, mit dem eine ähnliche Art von Verarbeitung wie Spark unter Verwendung von 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 2 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 array_contains
#create eine App namens LinuxHint
Spark_app = SparkSession.Erbauer.AppName ('LinuxHint').Getorcreate ()
# Betrachten Sie ein Array mit 5 Elementen
my_array_data = [(1, ['a']), (2, ['b', 'l', 'b']), (3, ['k', 'a', 'k']), ( 4, ['k']), (3, ['B', 'P'])]
#Definieren Sie den Struktur- und Strukturen
#Für die obigen Daten
schema = structTtype ([structfield ("student_category", IntegerType ()), structfield ("student_full_name", ArrayType (StringType ())]]))
#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_Position ()

Array_Position () wird verwendet, um die Position des in einem Array vorhandenen Wert in jeder Zeile der Spalte Array -Typ zurückzugeben. Es dauert zwei Parameter, der erste Parameter ist die Array -Spalte und der zweite Parameter ist der Wert. Es gibt die Wertposition in jedem Array zurück. Position beginnt mit 1.

Wenn es im selben Array mehrere Werte gibt, gibt es die Position des ersten Werts zurück.

Syntax

Array_Position (Array_Column, "Wert")

Parameter

  1. Array_Column ist die Array -Spalte mit Arrays mit Werten
  2. Der Wert ist im Array vorhanden.

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

Zurückkehren
Wenn der Wert in einem Array vorhanden ist, gibt er die Position zurück; Andernfalls wird 0 zurückgegeben.

Beispiel 1
In diesem Beispiel erhalten wir die Wertposition - „K“ aus der Spalte student_full_name in der oben erstellten Datenfreame.

#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']), (2, ['b', 'l', 'b']), (3, ['k', 'a', 'k']), ( 4, ['k']), (3, ['B', 'P'])]
#Definieren Sie den Struktur- und Strukturen
#Für die obigen Daten
schema = structTtype ([structfield ("student_category", IntegerType ()), structfield ("student_full_name", ArrayType (StringType ())]]))
#Erstellen Sie den Datenrahmen und fügen Sie dem DataFrame Schema hinzu
df = spark_app.erstellteataframe (my_array_data, schema = schema)
#REIT DIE SCHWEISENDE POSITION - K In jeder Zeile der Spalte student_full_name
df.select ("student_full_name", array_position ("student_full_name", 'k')).zeigen()

Ausgang

Sie können in der zweiten Spalte sehen, dass die Wertpositionen in Arrays in allen Zeilen zurückgegeben wurden.

  1. In der ersten Reihe existiert K nicht - daher kehrte es 0 zurück
  2. In der zweiten Reihe existiert K nicht - daher kehrte es 0 zurück
  3. In der dritten Reihe existiert K an zwei Positionen, 1. und 3. - es dauert nur die erste Position, so dass es 0 zurückgibt
  4. In der vierten Reihe existiert K in der ersten Position - daher kehrte es 1 zurück
  5. In der fünften Reihe existiert k nicht - daher kehrte es 0 zurück

Beispiel 2
In diesem Beispiel erhalten wir die Wertposition - "A" aus der Spalte student_full_name in der obigen erstellten Datenframe.

#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']), (2, ['b', 'l', 'b']), (3, ['k', 'a', 'k']), ( 4, ['k']), (3, ['B', 'P'])]
#Definieren Sie den Struktur- und Strukturen
#Für die obigen Daten
schema = structTtype ([structfield ("student_category", IntegerType ()), structfield ("student_full_name", ArrayType (StringType ())]]))
#Erstellen Sie den Datenrahmen und fügen Sie dem DataFrame Schema hinzu
df = spark_app.erstellteataframe (my_array_data, schema = schema)
#REIT DIE SCHWEISUNGSPOSITION - A in jeder Zeile der Spalte student_full_name
df.select ("student_full_name", array_position ("student_full_name", 'a')).zeigen()

Ausgang

Sie können in der zweiten Spalte sehen, dass die Wertpositionen in Arrays in allen Zeilen zurückgegeben wurden.

  1. In der ersten Reihe existiert ein an der ersten Position - daher kehrte sie 1 zurück
  2. In der zweiten Reihe existiert A nicht - daher kehrte es 0 zurück
  3. In der dritten Reihe existiert ein in der zweiten Position- also kehrt es 2 zurück
  4. In der vierten Reihe existiert A nicht - daher kehrte es 0 zurück
  5. In der fünften Reihe existiert A nicht - daher kehrt es 0 zurück.

Array_repeat ()

Array_Repeat () wird verwendet, um das Array n -mal zu wiederholen. Mit anderen Worten, es wird das Array duplizieren und die n -mal über alle Zeilen in der Spalte vom Array -Typ ersetzen. Es dauert zwei Parameter. Der erste Parameter ist der Spaltenname des Array -Typs, und der zweite Parameter wird wiederholt, was einen Ganzzahlwert erfordert, der sich auf die Anzahl der Male bezieht, um das Array zu wiederholen.

Syntax

Array_repeat (Array_Column, Wiederholung)

Parameter

  1. Array_Column ist die Array -Spalte mit Arrays mit Werten
  2. Wiederholung erfordert einen Ganzzahlwert, um das Array in allen Zeilen zu wiederholen

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

Zurückkehren
Wenn wiederholte Arrays im verschachtelten Array die Rückkehr wiederholte.

Beispiel 1
In diesem Beispiel wiederholen wir das Array 2 Mal in allen Zeilen der Spalte student_full_name mithilfe von array_repeat () und den Datenrahmen mit der Methode sammeln.

#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']), (2, ['b', 'l', 'b']), (3, ['k', 'a', 'k']), ( 4, ['k']), (3, ['B', 'P'])]
#Definieren Sie den Struktur- und Strukturen
#Für die obigen Daten
schema = structTtype ([structfield ("student_category", IntegerType ()), structfield ("student_full_name", ArrayType (StringType ())]]))
#Erstellen Sie den Datenrahmen und fügen Sie dem DataFrame Schema hinzu
df = spark_app.erstellteataframe (my_array_data, schema = schema)
#Repeat das Array 2 Mal
df.select ("student_full_name", array_repeat ("student_full_name", 2)).sammeln()

Ausgang

[Row (student_full_name = ['a'], array_repeat (student_full_name, 2) = [['a'], ['a']]),
Row (student_full_name = ['b', 'l', 'b'], array_repeat (student_full_name, 2) = [['B', 'L', 'B'], ['B', 'L', ',', ',', ',', ',', ',', ' B']]),
Row (student_full_name = ['k', 'a', 'k'], array_repeat (student_full_name, 2) = [['k', 'a', 'k'], ['k', 'a', '' '' K '])),
Row (student_full_name = ['k'], array_repeat (student_full_name, 2) = [['k'], ['k']]),
Row (student_full_name = ['b', 'p'], array_repeat (student_full_name, 2) = [['b', 'p'], ['B', 'P']])]

Wir können sehen, dass Array in allen Zeilen der Spalte student_full_name in einem verschachtelten Array zweimal wiederholt wird,

Beispiel 2
In diesem Beispiel wiederholen wir das Array in allen Zeilen der Spalte student_full_name mithilfe von array_repeat () in allen Zeilen der Spalte student_full_name und zeigen den Datenrahmen mit der Methode sammeln.

#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']), (2, ['b', 'l', 'b']), (3, ['k', 'a', 'k']), ( 4, ['k']), (3, ['B', 'P'])]
#Definieren Sie den Struktur- und Strukturen
#Für die obigen Daten
schema = structTtype ([structfield ("student_category", IntegerType ()), structfield ("student_full_name", ArrayType (StringType ())]]))
#Erstellen Sie den Datenrahmen und fügen Sie dem DataFrame Schema hinzu
df = spark_app.erstellteataframe (my_array_data, schema = schema)
#Repeat das Array 4 Mal
df.select ("student_full_name", array_repeat ("student_full_name", 4)).sammeln()

Ausgang

[Row (student_full_name = ['a'], array_repeat (student_full_name, 4) = [['a'], ['a'], ['a'], ['a']]),
Row (student_full_name = ['b', 'l', 'b'], array_repeat (student_full_name, 4) = [['B', 'L', 'B'], ['B', 'L', ',', ',', ',', ',', ',', ',', ' B '], [' B ',' L ',' B '], [' B ',' L ',' B ']]),
Row (student_full_name = ['k', 'a', 'k'], array_repeat (student_full_name, 4) = [['k', 'a', 'k'], ['k', 'a', '' ' K '], [' k ',' a ',' k '], [' k ',' a ',' k ']]),
Row (student_full_name = ['k'], array_repeat (student_full_name, 4) = ['k'], ['k'], ['k'], ['k']])),
Row (student_full_name = ['b', 'p'], array_repeat (student_full_name, 4) = [['b', 'p'], ['B', 'P'], ['B', 'P' ], ['B', 'p']])]]]

Wir sehen.

Abschluss

In diesem pyspark -Artikel haben wir zwei verschiedene Array -Funktionen gesehen. Array_Position () wird verwendet, um die Position des angegebenen Wertes in einem Array zurückzugeben. Wir haben festgestellt, dass es die erste Position zurückgeben würde, wenn es mehrere Werte in einem Array gäbe. Als Nächst. Die wiederholten Arrays werden in einem verschachtelten Array aufbewahrt. Beide Funktionen verwenden die Methode Select (), um die Funktionalität durchzuführen.