PYSPARK eksploduj i eksploduj_

PYSPARK eksploduj i eksploduj_
W Python PYSPARK to moduł Spark używany do zapewnienia podobnego rodzaju przetwarzania, takiego jak Spark za pomocą DataFrame. Zapewnia StructType () I Structfield () Metody, które są używane do zdefiniowania kolumn w PYSPARK DataFrame.

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

StructType ()

Ta metoda służy do zdefiniowania struktury ramki danych PYSPARK. 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 środku StructType () Metoda 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 umieścić w środku Arrytype (). 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 studentów. Druga kolumna - nazwa_full_name służy do przechowywania wartości ciągów w tablicy utworzonej za pomocą 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 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:

eksplodować()

Teraz zobaczymy co eksplodować() robi. eksplodować() zwróci każdą indywidualną wartość z tablicy. Jeśli tablica jest pusta lub zerowa, zignoruje i przejdzie do następnej tablicy w kolumnie typu tablicy w Pyspark DataFrame. Jest to możliwe przy użyciu wybierać() metoda. W tej metodzie możemy użyć array_min () Funkcja i zwróć wynik.

Składnia:

ramka danych.Wybierz (eksploduj (Array_Column))

Parametry:
- Array_Column: zawiera wartości typu tablicy
Powrót:
- Zwróci wszystkie wartości w tablicy we wszystkich rzędach w kolumnie typu tablicy w Pyspark DataFrame.

Przykład 1:

W tym przykładzie zwrócimy wszystkie wartości w tablicy z kolumny Student_Full_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']), (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)
# Zastosuj eksplodowanie w kolumnie Student_Full_Name
df.Wybierz („Student_full_name”, Explode ('Student_Full_Name'))).pokazywać()

Wyjście:

Widzimy, że w 2. kolumnie każda wartość w tablicy z każdego wiersza jest zwracana.

Teraz zobaczmy, co jeśli wartości tablicy są puste.

Przykład 2:

TaFrame Data Frame nie ma wartości w tablicy.

#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, []), (2, []), (3, []), (4, []), (3, [])]
#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)
# eksploduj kolumnę Student_Full_Name
df.Wybierz („Student_full_name”, Explode ('Student_Full_Name'))).pokazywać()

Wyjście:

Nic nie zwraca, ponieważ wszystkie wartości brakuje w kolumnie tablicy - nazwa_pełna_full_name.

Expodode_outer ()

Teraz zobaczymy co Expodode_outer () robi. Expodode_outer () zwróci każdą indywidualną wartość z tablicy. Jeśli tablica jest pusta lub null, zwraca NULL i przejdź do następnej tablicy w kolumnie typu tablicy w Pyspark DataFrame. Jest to możliwe przy użyciu wybierać() metoda. W tej metodzie możemy użyć array_min () Funkcja i zwróć wynik.

Składnia:

ramka danych.Wybierz (Expodode_outer (array_column))

Parametry:
- Array_Column: zawiera wartości typu tablicy

Powrót:
- Zwróci wszystkie wartości w tablicy we wszystkich rzędach w kolumnie typu tablicy w Pyspark DataFrame.

Różnica pomiędzy eksplodować() I Expodode_outer () czy to, eksplodować() nic nie zwróci, gdy w tablicy nie ma żadnych wartości. Ale Expodode_outer () zwróć zerową, gdy w tablicy nie ma żadnych wartości.

Przykład 1:

W tym przykładzie zwrócimy wszystkie wartości w tablicy z kolumny Student_Full_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']), (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)
# Zastosuj Expode_OUTER w kolumnie Student_Full_Name
df.Wybierz („Student_full_name”, Expodode_outer ('student_full_name')))).pokazywać()

Wyjście:

Teraz zobaczmy, co jeśli wartości tablicy są puste.

Przykład 2:

TaFrame Data Frame nie ma wartości w tablicy.

#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, []), (2, []), (3, []), (4, []), (3, [])]
#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)
# Zastosuj Expode_OUTER Kolumna nazwa_pełny
df.Wybierz („Student_full_name”, Expodode_outer ('student_full_name')))).pokazywać()

Wyjście:

Zwraca Null we wszystkich wierszach, ponieważ wszystkie wartości brakuje w tablicy- Student_Full_Name.

Wniosek

W tym artykule omówiliśmy eksplodować() I Expodode_outer () zastosowane w kolumnie typu tablicy w ramce danych z dwoma różnymi przykładami. eksplodować() I Expodode_outer () wykona jakieś działanie, gdy wszystkie wartości w tablicy nie są zerowe. Jeśli jakakolwiek wartość w tablicy jest null, eksplodować() zignoruje tę wartość zerową. Ale Expodode_outer () rozważy i zwróci wartość zerową, gdziekolwiek wartość zerowa jest obecna w tablicy.