Pyspark - Función Row_Number

Pyspark - Función Row_Number
Es posible particionar las filas en el marco de datos utilizando la función de la ventana en Pyspark,. Está disponible en el pyspark.sql.ventana módulo.

La ventaja de la partición es lograr la consistencia y la agrupación de los datos. Después de realizar la partición, podemos proporcionar los números a la fila en cada partición utilizando el numero de fila() función.

Es posible dividir las filas en un marcado de datos basado en los valores en una columna particular. Todos los valores similares se establecen en cada partición. Supongamos que hay 3 tipos de valores similares, entonces cada tipo es una partición. Entonces, habrá tres particiones.

Función de ventana Row_Number ()

El Row_Number en Pyspark es una función de ventana que se utiliza para establecer los números a partir de 1 en cada ventana particionada.

Lo principal es que el row_number () no está disponible directamente. Tenemos que importarlo del pyspark.sql.funciones módulo.

Sintaxis para importar módulo:

de Pyspark.sql.Funciones importar row_number

De lo contrario, también podemos hacer esto para importar todos los métodos de este módulo.

de Pyspark.sql.Importación de funciones *

Tenemos que seguir los siguientes pasos para realizar la partición y aplicar el número ROW_Number en los datos particionados.

Pasos:

  1. Cree un marco de datos de Pyspark que tenga algunos valores similares en al menos una columna.
  2. Partition los datos utilizando el método PartitionBy () disponible en la función de la ventana y pídalos en función de la columna utilizando la función OrderBy ().

Sintaxis:

partición = ventana.Partitionby ("columna").Orderby ("columna")

Podemos ordenar los datos particionados con la columna particionada o cualquier otra columna.

  1. Ahora, puede usar la función row_number () en las filas particionadas usando el encima() función. Entonces, agregamos una columna para almacenar el número de fila usando el WithColumn () función.

Sintaxis:

dataframe_obj.withColumn ("nombre", row_number ().sobre (partición))

Aquí, el nombre especifica el nombre de la fila y el DataFrame_obj es nuestro Pyspark DataFrame.

Implementemos el código.

Ejemplo 1:

Aquí, creamos un marco de datos de Pyspark que tiene 5 columnas: ['ujem_id', 'nombre', 'edad', 'tecnología1', 'tecnología2'] con 10 filas y divide las filas basadas en el Tecnología1 Usar la función de la ventana después de obtener los números de fila para particiones y agregarlos en la columna - Fila para la tecnología1.

importar pyspark
de Pyspark.Importación SQL *
Spark_app = Sparksession.constructor.nombre de la aplicación('_').getorcreate ()
Estudiantes = [(4, 'Sravan', 23, 'Php', 'Pruebas'),
(2, 'Sravan', 23, 'Oracle', 'Prueba'),
(46, 'Mounika', 22, '.Net ',' html '),
(12, 'Deepika', 21, 'Oracle', 'html'),
(46, 'Mounika', 22, 'Oracle', 'Prueba'),
(12, 'Chandrika', 23, 'Hadoop', 'C#'),
(12, 'Chandrika', 22, 'Oracle', 'Prueba'),
(45, 'Sravan', 23, 'Oracle', 'C#'),
(4, 'Deepika', 21, 'Php', 'C#'),
(46, 'Mounika', 22, '.Net ',' prueba ')
]
dataFrame_OBJ = Spark_App.creatataFrame (estudiantes, ['temas_id', 'nombre', 'edad', 'tecnología1', 'tecnología2'])
imprimir ("---------- DataFrame ----------")
dataframe_obj.espectáculo()
# Importar la función de la ventana
de Pyspark.sql.Ventana de importación de ventana
#Importa la fila de pyspark.sql.funciones
de Pyspark.sql.Funciones importar row_number
#Partition El DataFrame basado en los valores en la columna Technology1 y
#Oder las filas en cada partición basada en la columna TIEMPLE_ID
partición = ventana.Partitionby ("Technology1").Orderby ('temas_id')
imprimir ("---------- DataFrame dividido ----------")
#Nútbol de mención de mención para cada fila en la columna de fila
dataframe_obj.WithColumn ("Row for Technology1", Row_Number ().sobre (partición)).espectáculo()

Producción:

Explicación:

La primera salida representa los datos reales presentes en DataFrame. En la segunda salida, la partición se realiza en base a la Tecnología1 columna.

El número total de particiones es 4.

Partición 1:

El .La red ocurrió dos veces en la primera partición. Entonces, los Row_numbers son 1 y 2.

Partición 2:

Hadoop ocurrió una vez en la segunda partición. Entonces, el Row_Number es 1.

Partición 3:

Oracle ocurrió cinco veces en la tercera partición. Entonces, los Row_numbers son 1, 2, 3, 4 y 5.

Partición 4:

PHP ocurrió dos veces en la quinta partición. Entonces, los Row_numbers son 1 y 2.

Ejemplo 2:

Para el mismo DataFrame, dividimos las filas basadas en Tecnología2 Usar la función de la ventana después de obtener los números de fila para particiones y agregarlos en la columna - Fila para tecnología2.

importar pyspark
de Pyspark.Importación SQL *
Spark_app = Sparksession.constructor.nombre de la aplicación('_').getorcreate ()
Estudiantes = [(4, 'Sravan', 23, 'Php', 'Pruebas'),
(2, 'Sravan', 23, 'Oracle', 'Prueba'),
(46, 'Mounika', 22, '.Net ',' html '),
(12, 'Deepika', 21, 'Oracle', 'html'),
(46, 'Mounika', 22, 'Oracle', 'Prueba'),
(12, 'Chandrika', 23, 'Hadoop', 'C#'),
(12, 'Chandrika', 22, 'Oracle', 'Prueba'),
(45, 'Sravan', 23, 'Oracle', 'C#'),
(4, 'Deepika', 21, 'Php', 'C#'),
(46, 'Mounika', 22, '.Net ',' prueba ')
]
dataFrame_OBJ = Spark_App.creatataFrame (estudiantes, ['temas_id', 'nombre', 'edad', 'tecnología1', 'tecnología2'])
imprimir ("---------- DataFrame ----------")
dataframe_obj.espectáculo()
# Importar la función de la ventana
de Pyspark.sql.Ventana de importación de ventana
#Importa la fila de pyspark.sql.funciones
de Pyspark.sql.Funciones importar row_number
#Partition El DataFrame basado en los valores en la columna Technology2 y
#Oder las filas en cada partición basada en la columna TIEMPLE_ID
partición = ventana.Partitionby ("Tecnología2").Orderby ('temas_id')
imprimir ("---------- DataFrame dividido ----------")
#Nútbol de mención de mención para cada fila en la columna de fila
dataframe_obj.WithColumn ("Row for Technology2", Row_Number ().sobre (partición)).espectáculo()

Producción:

Explicación:

La primera salida representa los datos reales presentes en DataFrame. En la segunda salida, la partición se realiza en base a la Tecnología2 columna.

El número total de particiones es 3.

Partición 1:

C# ocurrió tres veces en la primera partición. Entonces, los Row_numbers son 1, 2 y 3.

Partición 2:

HTML ocurrió dos veces en la segunda partición. Entonces, los Row_numbers son 1 y 2.

Partición 3:

Las pruebas ocurrieron cinco veces en la tercera partición. Entonces, los Row_numbers son 1, 2, 3, 4 y 5.

Conclusión

Discutimos cómo particionar las filas en el marco de datos de Pyspark y obtener los números de fila en cada partición utilizando la función de ventana row_number (). El Row_Number en Pyspark es una función de ventana que se utiliza para establecer los números a partir de 1 en cada ventana particionada. Asegúrese de usar este comando mientras usa esta función - de Pyspark.sql.Funciones importar row_number.