¿Cómo ordenar por valor en PySpark?

En este artículo, vamos a ordenar por valor en PySpark.

Creando RDD para demostración:

Python3

# importing module
from pyspark.sql import SparkSession, Row
  
# creating sparksession and giving an app name
spark = SparkSession.builder.appName('sparkdf').getOrCreate()
  
# create 2 Rows with 3 columns
data = Row(First_name="Sravan", Last_name="Kumar", age=23),
Row(First_name="Ojaswi", Last_name="Pinkey", age=16),
Row(First_name="Rohith", Last_name="Devi", age=7)
  
# create row on rdd
rdd = spark.sparkContext.parallelize(data)
  
# display data
rdd.collect()

Producción:

[Row(First_name='Sravan', Last_name='Kumar', age=23),
Row(First_name='Ojaswi', Last_name='Pinkey', age=16),
Row(First_name='Rohith', Last_name='Devi', age=7)]

Método 1: Usar sortBy()

sortBy() se usa para ordenar los datos por valor de manera eficiente en pyspark. Es un método disponible en rdd.

Sintaxis: rdd.sortBy(expresión lambda)

Utiliza una expresión lambda para ordenar los datos en función de las columnas.

expresión lambda: lambda x: x[índice_columna]

Ejemplo 1: ordenar los datos por valores según la columna 1

Python3

# sort the data by values based on column 1
rdd.sortBy(lambda x: x[0]).collect()

Producción:

[Row(First_name='Ojaswi', Last_name='Pinkey', age=16),
Row(First_name='Rohith', Last_name='Devi', age=7),
Row(First_name='Sravan', Last_name='Kumar', age=23)]

Ejemplo 2: ordenar datos según los valores de la columna 2

Python3

# sort the data by values based on column 2
rdd.sortBy(lambda x: x[2]).collect()

Producción:

[Row(First_name='Rohith', Last_name='Devi', age=7),
Row(First_name='Ojaswi', Last_name='Pinkey', age=16),
Row(First_name='Sravan', Last_name='Kumar', age=23)]

Método 2: Usando takeOrdered()

Es el método disponible en RDD, se utiliza para ordenar valores según los valores de una columna en particular.

Sintaxis: rdd.takeOrdered(n,expresión lambda)

donde, n es el total de filas que se mostrarán después de ordenar

Ordene los valores según una columna en particular usando la función takeOrdered

Python3

# sort values based on
# column 1 using takeOrdered function
print(rdd.takeOrdered(3,lambda x: x[0]))
  
# sort values based on
# column 3 using takeOrdered function
print(rdd.takeOrdered(3,lambda x: x[2]))

Producción:

[Row(First_name=’Ojaswi’, Last_name=’Pinkey’, age=16), Row(First_name=’Rohith’, Last_name=’Devi’, age=7), Row(First_name=’Sravan’, Last_name=’ Kumar’, edad=23)]

[Row(First_name=’Rohith’, Last_name=’Devi’, age=7), Row(First_name=’Ojaswi’, Last_name=’Pinkey’, age=16), Row(First_name=’Sravan’, Last_name=’ Kumar’, edad=23)]

Publicación traducida automáticamente

Artículo escrito por gottumukkalabobby y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *