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.