PYSPARK - funkcja Row_number

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

Zaletą partycji jest osiągnięcie spójności danych i grupowanie. Po wykonaniu partycji możemy podać liczby do wiersza w każdej partycji za pomocą Numer wiersza() funkcjonować.

Możliwe jest podział wierszy w ramce danych na podstawie wartości w określonej kolumnie. Wszystkie podobne wartości są ustawione na każdą partycję. Załóżmy, że istnieją 3 typy podobnych wartości, wówczas każdy typ jest partycją. Tak więc będą trzy partycje.

Row_number () Funkcja okna

Row_number w PYSPARK to funkcja okna używana do ustawiania liczb zaczyna się od 1 w każdym partycjonowanym oknie.

Najważniejsze jest to, że row_number () nie jest dostępny bezpośrednio. Musimy to zaimportować z Pyspark.SQL.Funkcje moduł.

Składnia do importu modułu:

od Pyspark.SQL.Funkcje importują Row_number

W przeciwnym razie możemy to zrobić, aby zaimportować wszystkie metody z tego modułu.

od Pyspark.SQL.Funkcje importu *

Musimy wykonać następujące kroki, aby wykonać partycję i zastosować liczbę Row_number na partycjonowane dane.

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ą.

  1. Teraz możesz użyć funkcji row_number () w partycjonowanych rzędach za pomocą nad() funkcjonować. Więc dodajemy kolumnę do przechowywania numeru wiersza za pomocą withcoolumn () funkcjonować.

Składnia:

DataFrame_Obj.withColumn („Nazwa”, row_number ().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 po uzyskaniu numerów wierszy dla partycji i dodaniu ich w kolumnie - Rząd dla technologii1.

Import Pyspark
od Pyspark.SQL Import *
Spark_App = Sparksession.budowniczy.Nazwa aplikacji('_').getorCreate ()
studenci = [(4, „Sravan”, 23, „Php”, „Testowanie”),
(2, „Sravan”, 23, „Oracle”, „Testing”),
(46, „Mounika”, 22, '.Net ', „html”),
(12, „Deepika”, 21, „Oracle”, „html”),
(46, „Mounika”, 22, „Oracle”, „Testing”),
(12, „Chandrika”, 23, „Hadoop”, „C#”),
(12, „Chandrika”, 22, „Oracle”, „Testing”),
(45, „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
#Wprowadź Row_number z Pyspark.SQL.Funkcje
od Pyspark.SQL.Funkcje importują Row_number
#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 numeru wiersza dla każdego wiersza w kolumnie wiersza
DataFrame_Obj.withColumn („Row for Technology1”, Row_number ().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. Tak więc row_numbers to 1 i 2.

Partict 2:

Hadoop miał miejsce raz w drugim partycji. Tak więc Row_number to 1.

Partycja 3:

Oracle wystąpiła pięć razy w trzeciej partycji. Tak więc Row_numbers to 1, 2, 3, 4 i 5.

Partycja 4:

PHP wystąpił dwa razy w piątej partycji. Tak więc row_numbers to 1 i 2.

Przykład 2:

W przypadku tego samego DataFrame dzielimy wiersze na podstawie Technologia2 Korzystanie z funkcji okna po uzyskaniu numerów wierszy dla partycji i dodaniu ich w kolumnie - Rząd dla technologii2.

Import Pyspark
od Pyspark.SQL Import *
Spark_App = Sparksession.budowniczy.Nazwa aplikacji('_').getorCreate ()
studenci = [(4, „Sravan”, 23, „Php”, „Testowanie”),
(2, „Sravan”, 23, „Oracle”, „Testing”),
(46, „Mounika”, 22, '.Net ', „html”),
(12, „Deepika”, 21, „Oracle”, „html”),
(46, „Mounika”, 22, „Oracle”, „Testing”),
(12, „Chandrika”, 23, „Hadoop”, „C#”),
(12, „Chandrika”, 22, „Oracle”, „Testing”),
(45, „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
#Wprowadź Row_number z Pyspark.SQL.Funkcje
od Pyspark.SQL.Funkcje importują Row_number
#Partiction Scrame na podstawie wartości w kolumnie technologii2 i
#Order rzędów w każdej partycji na podstawie kolumny tematu_d
parition = okno.Partitionby („Technology2”).OrderBy („tematy_id”)
Drukuj („---------- PARTITIONED DATEFRAME ----------”)
#Now Wspomnienie numeru wiersza dla każdego wiersza w kolumnie wiersza
DataFrame_Obj.withColumn („Row for Technology2”, row_number ().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 Technologia2 kolumna.

Całkowita liczba partycji wynosi 3.

Partycja 1:

C# wystąpił trzy razy w pierwszej partycji. Tak więc row_numbers to 1, 2 i 3.

Partict 2:

HTML wystąpił dwa razy w drugim partycji. Tak więc row_numbers to 1 i 2.

Partycja 3:

Testy miały miejsce pięć razy w partycji trzeciej. Tak więc Row_numbers to 1, 2, 3, 4 i 5.

Wniosek

Omówiliśmy, jak podzielić wiersze w Pyspark DataFrame i uzyskać numery wierszy w każdej partycji za pomocą funkcji okna Row_Number (). Row_number w PYSPARK to funkcja okna używana do ustawiania liczb zaczyna się od 1 w każdym partycjonowanym oknie. Użyj tego polecenia podczas korzystania z tej funkcji - od Pyspark.SQL.Funkcje importują Row_number.