PYSPARK - funkcja ołowiu

PYSPARK - funkcja ołowiu
Funkcja lead () w PYSPARK jest dostępna w module okien, który służy do zwrócenia następnych wartości wierszy do bieżących wierszy. Po pierwsze, funkcja lead () zwraca zerową dla ostatniego wiersza/s w partycji. Przyjmuje parametr przesunięcia, który reprezentuje całkowitą liczbę wierszy, tak że następne wartości wiersza są zwracane do rzeczywistych wierszy. NULL są umieszczane dla pierwszego ostatniego rzędu/s (przesunięcie).

Możliwe jest podział wierszy w ramce danych za pomocą funkcji okna. Jest dostępny w Pyspark.SQL.okno moduł.

Składnia:

DataFrame_Obj.withColumn („Lead_Column”, Lead („kolumna”, offset).Over (partycja))

Wymaga dwóch parametrów:

  1. LEAD_COLUMN to nazwa kolumny w Pyspark DataFrame, w której wartość rzędu ołowiu są umieszczane na podstawie wartości w tej kolumnie.
  2. Przesunięcie określa liczbę całkowitą, aby zwrócić tę liczbę następnych wierszy do bieżących wartości wierszy.

Kroki:

  1. Utwórz Pyspark DataFrame, który ma pewne podobne wartości w co najmniej jednej kolumnie.
  2. Partycja danych za pomocą metody paritionby () dostępnej w funkcji okna i zamów je na podstawie kolumny za pomocą funkcji orderby ().

Składnia:

parition = okno.paritionby („kolumna”).Orderby („kolumna”)

Możemy zamówić partycjonowane dane z partycjonowaną kolumną lub dowolną inną kolumną.

Teraz możesz użyć funkcji lead () w partycjonowanych rzędach za pomocą nad() funkcjonować.

Dodajemy kolumnę do przechowywania numeru wiersza za pomocą withcoolumn () funkcjonować.

Składnia:

DataFrame_Obj.withColumn („Lead_Column”, Lead („kolumna”, offset).Over (partycja))

Tutaj nazwa określa nazwę wiersza, a DataFrame_OBJ to nasza Pyspark DataFrame.

Zaimplementujmy kod.

Przykład 1:

Tutaj tworzymy Pyspark DataFrame, który ma 5 kolumn - [„tematy_id”, „name”, „wiek”, „technologia Technologia 1 Korzystanie z funkcji okna. Następnie prowadzimy 1 rząd.

Import Pyspark
od Pyspark.SQL Import *
Spark_App = Sparksession.budowniczy.Nazwa aplikacji('_').getorCreate ()
studenci = [(4, „Sravan”, 23, „Php”, „Testowanie”),
(4, „Sravan”, 23, „php”, „testowanie”),
(46, „Mounika”, 22, '.Net ', „html”),
(4, „Deepika”, 21, „Oracle”, „html”),
(46, „Mounika”, 22, „Oracle”, „Testing”),
(12, „Chandrika”, 22, „Hadoop”, „C#”),
(12, „Chandrika”, 22, „Oracle”, „Testing”),
(4, „Sravan”, 23, „Oracle”, „C#”),
(4, „Deepika”, 21, „php”, „c#”),
(46, „Mounika”, 22, '.Net ', „testowanie”)
]
DataFrame_Obj = Spark_App.CreatedATAframe (studenci, [„Temat_id”, „nazwa”, „wiek”, „technologia1”, „technologia 2”])
Drukuj („---------- Rzeczywista ramka danych ----------”)
DataFrame_Obj.pokazywać()
# Zaimportuj funkcję okna
od Pyspark.SQL.okno importowe
#Wportu na prowadzenie z Pyspark.SQL.Funkcje
od Pyspark.SQL.Funkcje importują lead
#Partiction Scrame na podstawie wartości w kolumnie technologii1 i
#Order rzędów w każdej partycji na podstawie kolumny tematu_d
parition = okno.Partitionby („Technology1”).OrderBy („tematy_id”)
Drukuj („---------- PARTITIONED DATEFRAME ----------”)
#Now wspomina o przewodzie z Offset-1 na podstawie tematu_id
DataFrame_Obj.withColumn („Lead”, Lead („Temat_id”, 1).Over (partycja)).pokazywać()

Wyjście:

Wyjaśnienie:

Pierwsze wyjście reprezentuje rzeczywiste dane obecne w ramce danych. W drugim wyjściu partycja jest wykonywana na podstawie Technologia 1 kolumna.

Całkowita liczba partycji wynosi 4.

Partycja 1:

.Net wystąpiła dwa razy w pierwszej partycji. Ponieważ określiliśmy Offset ołowiu jako 1, ostatni .Wartość netto jest zerowa i pierwsza .Wartość netto to następny wiersz WARTOŚĆ_ID - 46.

Partict 2:

Hadoop miał miejsce raz w drugim partycji. Tak więc ołów jest zerowy.

Partycja 3:

Oracle wystąpiła cztery razy w trzeciej partycji.

  1. Dla ostatniego wyroczni ołowiu jest null.
  2. W przypadku pierwszego wyroczni wartość wiodąca wynosi 4 (ponieważ wartość następnego wiersza tematycznego wynosi 4).
  3. W przypadku trzeciego wyroczni wartość wiodąca wynosi 12 (ponieważ wartość następnego rzędu tematyczna jest 12).

W przypadku czwartego wyroczni wartość wiodąca wynosi 46 (ponieważ wartość następnego wiersza tematycznego wynosi 46).

Partycja 4:

PHP wystąpił trzy razy w czwartej partycji.

  1. Wartość wiodąca dla 3. PHP jest null.
  2. Wartość wiodąca dla 1st PHP wynosi 4 (ponieważ wartość następnego wiersza tematycznego wynosi 4).
  3. Wartość wiodąca dla 2. PHP wynosi 4 (ponieważ wartość następnego wiersza tematycznego wynosi 4).

Przykład 2:

Poprowadź wiersze o 2. Upewnij się, że utworzyłeś Pyspark DataFrame, jak pokazano w przykładzie 1.

# Zaimportuj funkcję okna
od Pyspark.SQL.okno importowe
#Wportu na prowadzenie z Pyspark.SQL.Funkcje
od Pyspark.SQL.Funkcje importują lead
#Partiction Scrame na podstawie wartości w kolumnie technologii1 i
#Order rzędów w każdej partycji na podstawie kolumny tematu_d
parition = okno.Partitionby („Technology1”).OrderBy („tematy_id”)
Drukuj („---------- PARTITIONED DATEFRAME ----------”)
#Now wspomina ołowiu z Offset-2 na podstawie tematu_id
DataFrame_Obj.withColumn („Lead”, Lead („Temat_id”, 2).Over (partycja)).pokazywać()

Wyjście:

Wyjaśnienie:

Partycja jest wykonywana na podstawie Technologia 1 kolumna.

Całkowita liczba partycji wynosi 4.

Partycja 1:

.Net wystąpiła dwa razy w pierwszej partycji. Ponieważ określiliśmy Offset ołowiu jako 2, przesunięcie jest zerowe dla obu wartości.

Partict 2:

Hadoop miał miejsce raz w drugim partycji. Tak więc ołów jest zerowy.

Partycja 3:

Oracle wystąpiła cztery razy w trzeciej partycji.

  • W dwóch ostatnich wyroczach prowadzenie jest zerowe.
  • W przypadku pierwszego wyroczni wartość wiodąca wynosi 12 (ponieważ kolejne 2 wiersze Temat_id wynosi 12).
  • W przypadku drugiego wyroczni wartość wiodąca wynosi 46 (ponieważ kolejne 2 wiersze Temat_id wynosi 46).

Partycja 4:

PHP wystąpił trzy razy w czwartej partycji.

  • W dwóch ostatnich wyroczach prowadzenie jest zerowe.
  • W przypadku pierwszego PHP wartość wiodąca wynosi 4 (ponieważ kolejne 2 wiersze Temat_id wynosi 4).

Przykład 3:

Poprowadź wiersze przez 2 w oparciu o kolumnę wiekową. Upewnij się, że utworzyłeś Pyspark DataFrame, jak pokazano w przykładzie 1.

# Zaimportuj funkcję okna
od Pyspark.SQL.okno importowe
#Wportu na prowadzenie z Pyspark.SQL.Funkcje
od Pyspark.SQL.Funkcje importują lead
#Partiction Scrame na podstawie wartości w kolumnie technologii1 i
#Order rzędów w każdej partycji na podstawie kolumny tematu_d
parition = okno.Partitionby („Technology1”).OrderBy („tematy_id”)
Drukuj („---------- PARTITIONED DATEFRAME ----------”)
#Now Wspomnienie ołowiu z Offset-2 w oparciu o wiek
DataFrame_Obj.z kolumn („Lead”, Lead („Age”, 2).Over (partycja)).pokazywać()

Wyjście:

Wyjaśnienie:

Partycja jest wykonywana na podstawie Technologia 1 kolumna i ołów jest zdefiniowane na podstawie kolumny wiekowej.

Całkowita liczba partycji wynosi 4.

Partycja 1:

.Net wystąpiła dwa razy w pierwszej partycji. Ponieważ określiliśmy Offset ołowiu jako 2, przesunięcie jest zerowe dla obu wartości.

Partict 2:

Hadoop miał miejsce raz w drugim partycji. Tak więc ołów jest zerowy.

Partycja 3:

Oracle wystąpiła cztery razy w trzeciej partycji.

  • Dla dwóch ostatnich wyroczni główny jest zerowy.
  • W przypadku pierwszego wyroczni wartość wiodąca wynosi 22 (ponieważ kolejne 2 wartość wiekowa wynosi 22).
  • W przypadku drugiej wyroczni wartość wiodąca wynosi 22 (ponieważ kolejne 2 wartość wiekowa wynosi 22).

Partycja 4:

PHP wystąpił trzy razy w czwartej partycji.

  • Dla dwóch ostatnich wyroczni główny jest zerowy.
  • W przypadku pierwszego PHP wartość wiodąca wynosi 21 (ponieważ kolejne 2 wartość wiekowa wynosi 21).

Wniosek

Nauczyliśmy się, jak zdobyć wartości wiodące w Pyspark DataFrame w partycjonowanych rzędach. Funkcja lead () w PYSPARK jest dostępna w module okien, który służy do zwrócenia następnych wartości wiersza do bieżących wierszy. Przyjmuje parametr przesunięcia, który reprezentuje całkowitą liczbę wierszy, tak że następne wartości wiersza są zwracane do rzeczywistych wierszy. Dla pierwszego ostatniego wiersza/s (offset) zerowe są umieszczane. Nauczyliśmy się różnych przykładów, ustawiając różne przesunięcia.