PYSPARK Array_Position & Array_repeat

PYSPARK Array_Position & Array_repeat
„W Python PYSPARK to moduł Spark używany do zapewnienia podobnego rodzaju przetwarzania, takiego jak Spark za pomocą DataFrame.

Zapewnia metody struktury () i structfield (), które są używane do definiowania kolumn w Pyspark DataFrame.

Korzystając z tych metod, możemy zdefiniować nazwy kolumn i typy danych poszczególnych kolumn."

Omów je jeden po drugim

StructType ()

Ta metoda służy do zdefiniowania struktury Pyspark DataFrame. Zaakceptuje listę typów danych wraz z nazwami kolumn dla danej ramki danych. Jest to znane jako schemat ramki danych. Przechowuje zbiór pól

Structfield ()

Ta metoda jest stosowana w metodzie structType () Pyspark DataFrame. Zaakceptuje nazwy kolumn z typem danych.

Arrytype ()

Ta metoda służy do zdefiniowania struktury tablicy Pyspark DataFrame. Zaakceptuje listę typów danych. Przechowuje zbiór pól. Możemy umieszczać dane danych wewnątrz ArrayType ().

W tym artykule musimy utworzyć ramkę danych za pomocą tablicy. Utwórzmy ramkę danych z 2 kolumnami. Pierwsza kolumna to Student_Category, która odnosi się do pola liczb całkowitych do przechowywania identyfikatorów studenta, a druga kolumna - nazwa_full_name jest używana do przechowywania wartości ciągów w tablicy utworzonej za pomocą ArYType ().

#Wportu na moduł PYSPARK
Import Pyspark
#Import Sparksession do tworzenia sesji
od Pyspark.SQL Import Sparksession
#i importuj typy struktur i inne typy danych
od Pyspark.SQL.Typy importuj struktury, structfield, stringType, IntegerType, FloatType, Arrytype
od Pyspark.SQL.Funkcje import array_contains
#Utworz aplikację o nazwie Linuxhint
Spark_App = Sparksession.budowniczy.AppName („Linuxhint”).getorCreate ()
# Rozważ tablicę z 5 elementami
my_array_data = [(1, ['a']), (2, ['b', 'l', 'b']), (3, ['k', 'a', 'k']), ( 4, ['k']), (3, ['b', 'p'])]]
#określić strukturę i pola struktury
#dla powyższych danych
schema = structType ([structfield („student_category”, IntegerType ()), structfield („Student_full_name”, Arrytype (StringType ())])))
#Ukreść ramkę danych i dodaj schemat do DataFrame
df = Spark_App.CreatedATAframe (my_array_data, schema = schemat)
df.pokazywać()

Wyjście:

array_position ()

array_position () służy do zwrócenia pozycji wartości obecnej w tablicy w każdym rzędzie kolumny typu tablicy. Wymaga dwóch parametrów, pierwszym parametrem jest kolumna tablicy, a drugi parametr to wartość. Zwraca pozycję wartości w każdej tablicy. Pozycja zaczyna się od 1.

Jeśli w tej samej tablicy jest wiele wartości, zwróci pozycję pierwszej wartości.

Składnia

array_position (array_column, „wartość”)

Parametry

  1. Array_Column to kolumna tablicy, która ma tablice o wartościach
  2. Wartość jest obecna w tablicy.

funkcja array_position () jest używana z metodą Select () do wykonania akcji.

Powrót
Jeśli wartość jest obecna w tablicy, zwróci pozycję; W przeciwnym razie zwróci 0.

Przykład 1
W tym przykładzie otrzymamy pozycję wartości - „k” z kolumny nazwy Student_Full_Name w powyższym utworzonym DataFrame.

#Wportu na moduł PYSPARK
Import Pyspark
#Import Sparksession do tworzenia sesji
od Pyspark.SQL Import Sparksession
#i importuj typy struktur i inne typy danych
od Pyspark.SQL.Typy importuj struktury, structfield, stringType, IntegerType, FloatType, Arrytype
od Pyspark.SQL.Funkcje importu *
#Utworz aplikację o nazwie Linuxhint
Spark_App = Sparksession.budowniczy.AppName („Linuxhint”).getorCreate ()
# Rozważ tablicę z 5 elementami
my_array_data = [(1, ['a']), (2, ['b', 'l', 'b']), (3, ['k', 'a', 'k']), ( 4, ['k']), (3, ['b', 'p'])]]
#określić strukturę i pola struktury
#dla powyższych danych
schema = structType ([structfield („student_category”, IntegerType ()), structfield („Student_full_name”, Arrytype (StringType ())])))
#Ukreść ramkę danych i dodaj schemat do DataFrame
df = Spark_App.CreatedATAframe (my_array_data, schema = schemat)
#zwróć pozycję wartości - k w każdym rzędzie kolumny nazwy Student_Full_name
df.Wybierz („Student_full_name”, array_position („student_full_name”, „k '))).pokazywać()

Wyjście

W drugiej kolumnie można zobaczyć, że zwrócono pozycje w tablicach we wszystkich rzędach.

  1. W pierwszym rzędzie k nie istnieje - dlatego zwrócił 0
  2. W drugim rzędzie k nie istnieje - stąd powrócił 0
  3. W trzecim rzędzie K istnieje na dwóch pozycjach, 1 i 3. - zajmuje tylko pierwszą pozycję, więc zwraca 0
  4. W czwartym rzędzie K istnieje w pierwszej pozycji - stąd powrócił 1
  5. W piątym rzędzie k nie istnieje - dlatego powrócił 0

Przykład 2
W tym przykładzie uzyskamy pozycję wartości - „a” z kolumny nazwy Student_Full_Name w powyższym utworzonym DataFrame.

#Wportu na moduł PYSPARK
Import Pyspark
#Import Sparksession do tworzenia sesji
od Pyspark.SQL Import Sparksession
#i importuj typy struktur i inne typy danych
od Pyspark.SQL.Typy importuj struktury, structfield, stringType, IntegerType, FloatType, Arrytype
od Pyspark.SQL.Funkcje importu *
#Utworz aplikację o nazwie Linuxhint
Spark_App = Sparksession.budowniczy.AppName („Linuxhint”).getorCreate ()
# Rozważ tablicę z 5 elementami
my_array_data = [(1, ['a']), (2, ['b', 'l', 'b']), (3, ['k', 'a', 'k']), ( 4, ['k']), (3, ['b', 'p'])]]
#określić strukturę i pola struktury
#dla powyższych danych
schema = structType ([structfield („student_category”, IntegerType ()), structfield („Student_full_name”, Arrytype (StringType ())])))
#Ukreść ramkę danych i dodaj schemat do DataFrame
df = Spark_App.CreatedATAframe (my_array_data, schema = schemat)
#return Pozycja wartości - A w każdym rzędzie kolumny nazwy Student_Full_Name
df.Wybierz („Student_full_name”, array_position („student_full_name”, „a '))).pokazywać()

Wyjście

W drugiej kolumnie można zobaczyć, że zwrócono pozycje w tablicach we wszystkich rzędach.

  1. W pierwszym rzędzie istnieje na pierwszej pozycji - stąd powrócił 1
  2. W drugim rzędzie A nie istnieje - stąd powrócił 0
  3. W trzecim rzędzie istnieje w drugiej pozycji- więc zwraca 2
  4. W czwartym rzędzie A nie istnieje - stąd powrócił 0
  5. W piątym rzędzie A nie istnieje - dlatego zwraca 0.

array_repeat ()

array_repeat () służy do powtarzania tablicy N czasów. Innymi słowy, powielnie tablicę i zastąpi N razy na wszystkie rzędy w kolumnie typu tablicy. Wymaga dwóch parametrów. Pierwszym parametrem jest nazwa kolumny typu tablicy, a drugi parametr musi się powtórzyć, co przyjmuje wartość liczbową, która odnosi się do liczby razy, aby powtórzyć tablicę.

Składnia

array_repeat (array_column, powtórz)

Parametry

  1. Array_Column to kolumna tablicy, która ma tablice o wartościach
  2. Powtórzenie przyjmuje wartość liczb całkowitą, aby powtórzyć tablicę we wszystkich wierszach

funkcja array_repeat () jest używana z metodą Select () do wykonania akcji.

Powrót
Jeśli zwróci powtarzane tablice w zagnieżdżonej tablicy.

Przykład 1
W tym przykładzie powtórzymy tablicę 2 razy we wszystkich rzędach kolumny nazwy Student_Full_Nam.

#Wportu na moduł PYSPARK
Import Pyspark
#Import Sparksession do tworzenia sesji
od Pyspark.SQL Import Sparksession
#i importuj typy struktur i inne typy danych
od Pyspark.SQL.Typy importuj struktury, structfield, stringType, IntegerType, FloatType, Arrytype
od Pyspark.SQL.Funkcje importu *
#Utworz aplikację o nazwie Linuxhint
Spark_App = Sparksession.budowniczy.AppName („Linuxhint”).getorCreate ()
# Rozważ tablicę z 5 elementami
my_array_data = [(1, ['a']), (2, ['b', 'l', 'b']), (3, ['k', 'a', 'k']), ( 4, ['k']), (3, ['b', 'p'])]]
#określić strukturę i pola struktury
#dla powyższych danych
schema = structType ([structfield („student_category”, IntegerType ()), structfield („Student_full_name”, Arrytype (StringType ())])))
#Ukreść ramkę danych i dodaj schemat do DataFrame
df = Spark_App.CreatedATAframe (my_array_data, schema = schemat)
#Wprowadź tablicę 2 razy
df.Wybierz („Student_full_name”, array_repeat („student_full_name”, 2))).zbierać()

Wyjście

[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']])]

Widzimy, że tablica jest powtarzana 2 razy we wszystkich rzędach kolumny Student_Full_Name w zagnieżdżonej tablicy,

Przykład 2
W tym przykładzie powtórzymy tablicę 4 razy we wszystkich rzędach kolumny Student_Full_Name za pomocą array_repeat () i wyświetli się na podstawie danych za pomocą metody zbierania.

#Wportu na moduł PYSPARK
Import Pyspark
#Import Sparksession do tworzenia sesji
od Pyspark.SQL Import Sparksession
#i importuj typy struktur i inne typy danych
od Pyspark.SQL.Typy importuj struktury, structfield, stringType, IntegerType, FloatType, Arrytype
od Pyspark.SQL.Funkcje importu *
#Utworz aplikację o nazwie Linuxhint
Spark_App = Sparksession.budowniczy.AppName („Linuxhint”).getorCreate ()
# Rozważ tablicę z 5 elementami
my_array_data = [(1, ['a']), (2, ['b', 'l', 'b']), (3, ['k', 'a', 'k']), ( 4, ['k']), (3, ['b', 'p'])]]
#określić strukturę i pola struktury
#dla powyższych danych
schema = structType ([structfield („student_category”, IntegerType ()), structfield („Student_full_name”, Arrytype (StringType ())])))
#Ukreść ramkę danych i dodaj schemat do DataFrame
df = Spark_App.CreatedATAframe (my_array_data, schema = schemat)
#Wprowadź tablicę 4 razy
df.Wybierz („Student_full_name”, array_repeat („student_full_name”, 4))).zbierać()

Wyjście

[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']])]

Widzimy, że tablica jest powtarzana 4 razy we wszystkich rzędach kolumny Student_Full_Name w zagnieżdżonej tablicy.

Wniosek

W tym artykule Pyspark widzieliśmy dwie różne funkcje tablicy. array_position () służy do zwrócenia pozycji określonej wartości w tablicy. Zauważyliśmy, że zwróci to pierwszą pozycję, gdyby w tablicy było wiele wartości. Następnie omówiliśmy metodę Array_Repeat (), która służy do powielania tablicy N we wszystkich wierszach. Powtarzane tablice są przechowywane w zagnieżdżonej tablicy. Obie funkcje używają metody select () do wykonywania funkcjonalności.