PYSPARK Array_Union, Array_intersect i Array_Except

PYSPARK Array_Union, Array_intersect i Array_Except
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 3 kolumnami. Pierwsza kolumna to Student_Category, która odnosi się do pola liczb całkowitych do przechowywania identyfikatorów uczniów i drugiej kolumny - nazwa_first_first, trzecia kolumna - nazwa_last_last jest używana do przechowywania wartości ciągów w tablicy utworzonej za pomocą ArryType ().

#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'], ['a']), (2, ['b', 'l', '], [' a ']), (3, [' k ' , „A”, „k”], [k ', „a”, „k”]), (4, [' k '], [' k ',' a ',' k ']), ( 3, ['b', 'p'], ['a'])]
#określić strukturę i pola struktury
#dla powyższych danych
schema = structType ([structfield („Student_category”, IntegerType ()), structfield („Student_first_name”, ArrYType (stringType ())), structfield („Student_last_name”, ArraYType (StringType ())]))
#Ukreść ramkę danych i dodaj schemat do DataFrame
df = Spark_App.CreatedATAframe (my_array_data, schema = schemat)
df.pokazywać()

Wyjście

array_union ()

array_union () służy do dołączenia do dwóch kolumn typu tablicy w Pyspark DataFrame, zwracając wartości z obu kolumn tablicy do tablicy. Zajmuje dwie kolumny typu tablicy jako parametry.

Zwraca wszystkie wartości unikalne (tylko raz).

Składnia

array_union (array_column1, array_column2)

Parametry

  1. Array_Column1 to pierwsza kolumna tablicy, która ma tablice z wartościami
  2. Array_Column2 to druga kolumna tablicy, która ma tablice z wartościami.

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

Przykład
W tym przykładzie dołączymy do dwóch kolumn typu tablicy - nazwa Student_first_name i Student_Last_name

#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'], ['a']), (2, ['b', 'l', '], [' a ']), (3, [' k ' , „A”, „k”], [k ', „a”, „k”]), (4, [' k '], [' k ',' a ',' k ']), ( 3, ['b', 'p'], ['a'])]
#określić strukturę i pola struktury
#dla powyższych danych
schema = structType ([structfield („Student_category”, IntegerType ()), structfield („Student_first_name”, ArrYType (stringType ())), structfield („Student_last_name”, ArraYType (StringType ())]))
#Ukreść ramkę danych i dodaj schemat do DataFrame
df = Spark_App.CreatedATAframe (my_array_data, schema = schemat)
#Apply Array_Union na nazwie_first_name i Student_Last_name
df.Wybierz („Student_first_name”, „Student_last_name”,
array_union („Student_first_name”, „student_last_name”))).pokazywać()

Wyjście

Widzimy to

  1. W pierwszym rzędzie -[A] Union [a]: [a] (powrót unikalny)
  2. W drugim rzędzie - [B, L, B] Union [A]: [B, L, A]
  3. W trzecim rzędzie - [k, a, k] Union [k, a, k]: [k, a] (tylko k i a są unikalne)
  4. W czwartym rzędzie -[k] Union [k, a, k]: [k, a] (tylko k i a są unikalne)
  5. W piątym rzędzie -[B, P] Union [A]: [B, P, A]

array_intersect ()

array_intersect () służy do łączenia dwóch kolumn typu tablicy w Pyspark DataFrame, zwracając tylko wspólne wartości z obu tablic do nowej tablicy. Występuje dwie kolumny typu tablicy jako parametry.

Składnia

array_intersect (array_column1, array_column2)

Parametry

  1. Array_Column1 to pierwsza kolumna tablicy, która ma tablice z wartościami
  2. Array_Column2 to druga kolumna tablicy, która ma tablice z wartościami.

funkcja array_intersect () jest używana z metodą select () do wykonania akcji.

Przykład
W tym przykładzie przecinamy dwie kolumny typu tablicy - nazwa_first_name i nazwa_lastu

#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'], ['a']), (2, ['b', 'l', '], [' a ']), (3, [' k ' , „A”, „k”], [k ', „a”, „k”]), (4, [' k '], [' k ',' a ',' k ']), ( 3, ['b', 'p'], ['a'])]
#określić strukturę i pola struktury
#dla powyższych danych
schema = structType ([structfield („Student_category”, IntegerType ()), structfield („Student_first_name”, ArrYType (stringType ())), structfield („Student_last_name”, ArraYType (StringType ())]))
#Ukreść ramkę danych i dodaj schemat do DataFrame
df = Spark_App.CreatedATAframe (my_array_data, schema = schemat)
#Apply Array_interSect na nazwa_first_name i nazwa_last_name
df.Wybierz („Student_first_name”, „Student_last_name”,
array_intersect („student_first_name”, „student_last_name”))).pokazywać()

Wyjście

Widzimy to

  1. W pierwszym rzędzie -[a] przecinają [a]: [a] (a jest powszechny)
  2. W drugim rzędzie - [B, L, B] przecinają [A]: [] (żaden element nie jest powszechny)
  3. W trzecim rzędzie - [k, a, k] przecinają się [k, a, k]: [k, a] (k i a są powszechne)
  4. W czwartym rzędzie -[k] przecinają się [k, a, k]: [k] (tylko k jest powszechne)
  5. W piątym rzędzie -[b, p] przecinają [a]: [] (żaden element nie jest powszechny)

array_except ()

array_except () służy do łączenia dwóch kolumn typu tablicy w Pyspark DataFrame poprzez zwracanie wartości w Array1, ale nie w Array2.

Zwraca wszystkie wartości unikalne (tylko raz).

Składnia

array_except (array_column1, array_column2)

Parametry

  1. Array_Column1 to pierwsza kolumna tablicy, która ma tablice z wartościami
  2. Array_Column2 to druga kolumna tablicy, która ma tablice z wartościami.

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

Przykład
W tym przykładzie wykonamy Array_Except Dwie kolumny typu tablicy -

  1. Student_Last_name i Student_first_name
  2. Student_first_name i Student_Last_name
#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'], ['a']), (2, ['b', 'l', '], [' a ']), (3, [' k ' , „A”, „k”], [k ', „a”, „k”]), (4, [' k '], [' k ',' a ',' k ']), ( 3, ['b', 'p'], ['a'])]
#określić strukturę i pola struktury
#dla powyższych danych
schema = structType ([structfield („Student_category”, IntegerType ()), structfield („Student_first_name”, ArrYType (stringType ())), structfield („Student_last_name”, ArraYType (StringType ())]))
#Ukreść ramkę danych i dodaj schemat do DataFrame
df = Spark_App.CreatedATAframe (my_array_data, schema = schemat)
#Apply Array_Except On Student_Last_name i Student_first_name
df.Wybierz („Student_last_name”, „Student_first_name”,
array_except („student_last_name”, „student_first_name”))).pokazywać()
#Apply Array_Except na nazwa_first_name i nazwa_last_name
df.Wybierz („Student_first_name”, „Student_last_name”,
array_except („Student_first_name”, „student_last_name”))).pokazywać()

Wyjście

W pierwszym wyniku

  1. [A] z wyjątkiem [a] - [] (ponieważ a z kolumny 1 istnieje również w kolumnie2)
  2. [A] z wyjątkiem [b, l, b] - [a] (ponieważ a z kolumny 1 nie istnieje w kolumnie2)
  3. [K, a, k] z wyjątkiem [k, a, k] - [] (ponieważ k, a, k z kolumny1 istnieje również w kolumnie2) również)
  4. [K, a, k] z wyjątkiem [k] - [a] (ponieważ a z kolumny 1 nie istnieje w kolumnie2)
  5. [A] z wyjątkiem [b, p] - [a] (ponieważ a z kolumny 1 nie istnieje w kolumnie2)

W drugim wyniku

  1. [A] z wyjątkiem [a] - [] (ponieważ a z kolumny 1 istnieje również w kolumnie2)
  2. [B, L, B] Z wyjątkiem [A] - [B, L] (ponieważ B, L z kolumny 1 nie istnieje w kolumnie2)
  3. [K, a, k] z wyjątkiem [k, a, k] - [] (ponieważ k, a, k z kolumny1 istnieje również w kolumnie2) również)
  4. [K] z wyjątkiem [k, a, k] - [] (ponieważ k z kolumny 1 istnieje również w kolumnie2)
  5. [B, p] z wyjątkiem [a] - [b, p] (ponieważ b, p z kolumny 1 nie istnieje w kolumnie2)

Wniosek

W tym samouczku widzieliśmy trzy różne funkcje wykonane w kolumnach typu tablicy w Pyspark DataFrame. array_union () służy do dołączenia do dwóch kolumn typu tablicy w Pyspark DataFrame, zwracając wartości z obu kolumn tablicy do tablicy. array_intersect () służy do łączenia dwóch kolumn typu tablicy w Pyspark DataFrame, zwracając tylko wspólne wartości z obu tablic do nowej tablicy. array_except () służy do łączenia dwóch kolumn typu tablicy w Pyspark DataFrame poprzez zwracanie wartości w Array1, ale nie w Array2.